PageSourceSearch

https://nuiteqstage.se/

html nuiteqstage.se collected 2026-10-07 13:21:04 UTC 58,023 bytes, 1,071 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" translate="no">
3  <head>
4    <meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
6<meta name="author" content="NUITEQ®">
7
8  <meta name="description" content="NUITEQ Stage inloggning">
9
10
11
12  <title>NUITEQ Stage | Logga in</title>
13
14
15<link rel="icon" type="image/png" href="/img/favicon/favicon-228.png" sizes="228x228" />
16<link rel="icon" type="image/png" href="/img/favicon/favicon-196.png" sizes="196x196" />
17<link rel="icon" type="image/png" href="/img/favicon/favicon-195.png" sizes="195x195" />
18<link rel="icon" type="image/png" href="/img/favicon/favicon-180.png" sizes="180x180" />
19<link rel="icon" type="image/png" href="/img/favicon/favicon-167.png" sizes="167x167" />
20<link rel="icon" type="image/png" href="/img/favicon/favicon-152.png" sizes="152x152" />
21<link rel="icon" type="image/png" href="/img/favicon/favicon-144.png" sizes="144x144" />
22<link rel="icon" type="image/png" href="/img/favicon/favicon-128.png" sizes="128x128" />
23<link rel="icon" type="image/png" href="/img/favicon/favicon-120.png" sizes="120x120" />
24<link rel="icon" type="image/png" href="/img/favicon/favicon-96.png" sizes="96x96" />
25<link rel="icon" type="image/png" href="/img/favicon/favicon-76.png" sizes="76x76" />
26<link rel="icon" type="image/png" href="/img/favicon/favicon-57.png" sizes="57x57" />
27<link rel="icon" type="image/png" href="/img/favicon/favicon-32.png" sizes="32x32" />
28<link rel="icon" type="image/png" href="/img/favicon/favicon-16.png" sizes="16x16" />
29
30<link rel="stylesheet preload" type="text/css" href="https://nuiteqstage.se/css/bundle.css?v=1" as="style" />
31
32<link rel="preconnect" href="https://storage.nuiteqstage.com/" crossorigin />
33<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-regular.woff2" as="font" integrity="sha384-jpm2IU+5ZHTuF3VTG1V3ZuKAJjiS5iYd8U3xUkKvb1q59aOaYYSHLK8iB0wcOu9P" crossorigin="anonymous" />
34<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-300.woff2" as="font" integrity="sha384-aBKwa8jSEkPTj8x/MRPOP7d7dwKa5aR7JtVeRrJ60PZa2I0kch4j3ZH72abVUn0I" crossorigin="anonymous" />
35<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-500.woff2" as="font" integrity="sha384-Sen+DML6wa1CrNNKkUjqtR4ka+kKG4AbeCnyXP1difSPHgHgfoqb/KgzByPWCe5G" crossorigin="anonymous" />
36<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-600.woff2" as="font" integrity="sha384-kU4oVZ2KGlSLSyxvTxe37Frf3fzYNW+9nVhOCA+XyoLT45Ng3+avV+oLyCFcbH0g" crossorigin="anonymous" />
37<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-700.woff2" as="font" integrity="sha384-emmbvsreqHMfsyp4Hzotst6yX/qeISz3zByOWBKKqkkF3C8mtPmb3Q0PwWkIkUFn" crossorigin="anonymous" />
38<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat-v23-latin-800.woff2" as="font" integrity="sha384-+b9Jgg2fX1aQn87g/a2IMONUpMC8sz1Dna5Kq+0B5aaNEhGUTITYyLpZ81XwQBlZ" crossorigin="anonymous" />
39<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/roboto-mono/roboto-mono-v13-latin-regular.woff2" as="font" integrity="sha384-9PR7rSbowMeZL36v121GZy+d9mDrM7DDLFqVX0HcKvq6gM6oY23fFoiX+qaelBRS" crossorigin="anonymous" />
40<link rel="prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat-thin/montserrat-thin-webfont.woff" as="font" integrity="sha384-xSL9TfRpW32qT6/BBv9htFqRkzYrgpVuVH4Mn2E/JlPtlHgyMc1OrV9qCWswmJ6A" crossorigin="anonymous" />
41<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/text-security-disc/text-security-disc-compat.woff2" as="font" integrity="sha384-VkIurFTO17q8xCeoQ/VP8LL4QiOVfVz4yc2grQfevarnM2xdBTqOe9fto+rZqtf4" crossorigin="anonymous" />
42
43<!-- OpenDyslexic -->
44<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-Regular.woff2" as="font" integrity="sha384-4hkne2BbHAKDS9oNchXXVbCL9WO7hso9RVtlhdrMz7l8VKTVPLRMVDPtV9e195mu" crossorigin="anonymous" />
45<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-Bold.woff2" as="font" integrity="sha384-eCjP0QEURw3s7799xG77amfkybVX44I8UfmPZ+Z9OIXkynF5pFglxC+tROrwfmiJ" crossorigin="anonymous" />
46<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-Italic.woff2" as="font" integrity="sha384-63Z1/+ez+pww/jhA4hUgaIUBxqviExTKuSl7Cyb4sLLl9dfwSMQlzxOC/id+l3om" crossorigin="anonymous" />
47<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/OpenDyslexic-BoldItalic.woff2" as="font" integrity="sha384-iwYk7KyQIK85VPxKrbDA3IsvwOs
47MU+3XCvTn91WwLtHE2pf6IgApusb1LzK4a6Yp" crossorigin="anonymous" />
48
49<!-- Arvo -->
50<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo.woff2" as="font" integrity="sha384-26jY6A94OHzEP2kXVJskVkE/Cgk67R33+gtGy19/OipwdfdnOqKPon0uTmKIirGL" crossorigin="anonymous" />
51<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo-Bold.woff2" as="font" integrity="sha384-CvhDCqecV1kTtxRjF3v1UkaDrN98D4EfGVRLFj5rO9qTKFG+rajSBQjdI5kt3iY9" crossorigin="anonymous" />
52<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo-Italic.woff2" as="font" integrity="sha384-TpVBgSt1I55a9rN8ju3P+amudQp2Oxjq/UqXubpWler/m8ayJU6pcdbFtzY9t54k" crossorigin="anonymous" />
53<link rel="preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/Arvo-BoldItalic.woff2" as="font" integrity="sha384-VXCZiVXgFVb8ZgKsB01abxNTKWJsxIMlvsbHBB1AnHegmEXY9PeKBDGX+q+vwiJb" crossorigin="anonymous" />
54
55<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat/montserrat.css?family=Montserrat:300,400,500,600,700,800" as="style" crossorigin="anonymous" />
56<link rel="stylesheet prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/roboto-mono/roboto-mono.css?family=Roboto+Mono&display=swap" as="style" crossorigin="anonymous" />
57<link rel="stylesheet prefetch" href="https://storage.nuiteqstage.com/nuiteq-stage/montserrat-thin/montserrat-thin.css?family=Montserrat+Thin" as="style" crossorigin="anonymous" />
58<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/text-security-disc/text-security-disc.css?family=text-security-disc" as="style" crossorigin="anonymous" />
59<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/fontawesome/fontawesome.css?family=Font+Awesome+5+Free" as="style" integrity="sha384-xkLuBrLSvbftNLqj338rw1b93CwTlEh6ytgnKV7E+UJ4uYfz+abj6FKdfejZ+SAr" crossorigin="anonymous" />
60
61<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/opendyslexic/opendyslexic.css" as="style" crossorigin="anonymous" />
62<link rel="stylesheet preload" href="https://storage.nuiteqstage.com/nuiteq-stage/arvo/arvo.css" as="style" crossorigin="anonymous" />
63
64<script type="text/x-template" id="cookies-header">
65  <div id="cookies-header-overlay" v-if="show">
66    <div id="cookies-header-container">
67      <section class="cookie-section-container">
68        <img src="https://f.hubspotusercontent30.net/hubfs/515431/icon-cookie.svg" />
69        <div class="middle-section">
70          <p>
71            Our website uses cookies to provide you with the best possible experience.<br />
72            We do not make this information available to third parties.<br />
73            
74              <a href="https://www.nuiteq.com/privacy" target="_blank">Learn more</a>.
75            
76          </p>
77        </div>
78
79        <div class="button-section">
80          <button class="button-primary" @click="onAllowAll">Allow all cookies</button>
81          <button class="button-secondary" @click="onDeny">Deny</button>
82        </div>
83      </section>
84      <p v-if="gsigninAttempt" id="google-cookie-banner-msg">Sign in with Google is disabled, to enable it you must allow all cookies.</p>
85    </div>
86  </div>
87</script>
87
88
89
90
91    
92  </head>
93
94  <body class="home-guest-body">
95    <div class="home-guest-background">
96      <div class="background-part background-left"></div>
97      <div class="background-part background-right"></div>
98    </div>
99
100    
100<script type="text/x-template" id="call-devices-setup-component-template">
101  <div class="call-devices-setup-component">
102    <section>
103      <video v-show="isVideoEnabled === true" id="mediaVideoPreview"></video>
104      <section v-show="isVideoEnabled === false">
105        <img src="/img/gui/join-call-dec-2022/camera_off_icon.svg" alt="camera off icon" />
106        <p>{{ $t("CAMERA_IS_OFF") }}</p>
107      </section>
108      <menu>
109        <li>
110          <img v-show="!isVideoEnabled" v-on:click="turnCamera(true)" src="/img/gui/join-call-dec-2022/cameraOff.svg" alt="camera off" v-bind:nw-tooltip-text="tooltipTexts.camera_off_click_on" />
111          <img v-show="isVideoEnabled" v-on:click="turnCamera(false)" src="/img/gui/join-call-dec-2022/cameraOn.svg" alt="camera on" v-bind:nw-tooltip-text="tooltipTexts.camera_on_click_off" />
112        </li>
113        <li>
114          <img v-show="!isAudioInputEnabled" v-on:click="turnMicrophone(true)" src="/img/gui/join-call-dec-2022/micOff.svg" alt="microphone off" v-bind:nw-tooltip-text="tooltipTexts.mic_on_click_off" />
115          <img v-show="isAudioInputEnabled" v-on:click="turnMicrophone(false)" src="/img/gui/join-call-dec-2022/micOn.svg" alt="microphone on" v-bind:nw-tooltip-text="tooltipTexts.mic_off_click_on" />
116        </li>
117      </menu>
118    </section>
119    <section class="call-devices-setup-component-answered">
120      <div class="call-devices-setup-component-userlist" v-bind:class="{ empty: userlist.length === 0 }" v-show="showUsersOnBoard === true" nw-tooltip-direction="right" nw-tooltip-offset-x="20" v-bind:nw-tooltip-text="userlist.join('BRBR')">
121        <img src="/img/gui/join-call-dec-2022/user_friends.svg" alt="Participants icon" class="join-board-setup-component-userlist-icon" v-if="userlist.length > 0" />
122        <img src="/img/gui/join-call-dec-2022/no_user_friends.svg" alt="Participants icon" class="join-board-setup-component-userlist-icon" v-else />
123        {{ usersOnBoard }}
124      </div>
125      <div class="call-devices-setup-component-answered-panel panel-left">
126        <div class="call-devices-setup-component-answered-panel-group" v-bind:class=" { disabled: isNameEnabled === false }" v-if="nameVisible === true">
127          <span class="call-devices-setup-component-answered-panel-group-title">
128            {{ $t("YOUR_NAME") }}
129          </span>
130
131          <input
132            type="text"
133            ref="userNameInput"
134            class="call-devices-setup-component-answered-panel-group-input"
135            v-model="userName"
136            v-bind:class="{ error: userNameError === true }" />
137
138          <span class="call-devices-setup-component-answered-panel-group-error" v-if="errorCode !== null">
139            {{ errorMessages[errorCode] ?? 'Unknown error.' }}
140          </span>
141        </div>
142
143        <div class="call-devices-setup-component-join-buttons">
144          <button
145            class="generic-rounded-button filled"
146            v-bind:class="{ deactivated: !canJoinCall }"
147            v-bind:nw-tooltip-text="joinCallTooltipText"
148            v-on:click="joinCall">
149              {{ $t("JOIN_CALL") }}
150          </button>
151          <button
152            class="generic-rounded-button button-secondary"
153            v-bind:class="{ deactivated: !canJoinWhiteboard }"
154            v-bind:nw-tooltip-text="joinWhiteboardTooltipText"
155            v-on:click="joinWhiteboard">
156              {{ $t("GO_TO_WHITEBOARD") }}
157          </button>
158        </div>
159
160        <div class="call-devices-setup-component-video-settings-button" v-bind:class="{ empty: userName.length === 0 }" v-on:click="showDevicesSelection = true">
161          <img src="/img/gui/video-settings.svg" alt="video settings icon" class="join-board-setup-component-userlist-icon" />
162          {{ $t("VIDEO_AUDIO_SETTINGS") }}
163        </div>
164
165        <div class="call-devices-setup-component-advanced-screen-cover" v-if="showDevicesSelection === true" v-on:click="showDevicesSelection = false"></div>
166        <div class="call-devices-setup-component-advanced" v-if="showDevicesSelection === true">
167          <div class="call-devices-setup-component-advanced-title">
168            {{ $t("CAMERA_AUDIO_SETTINGS") }}
169          </div>
170
171          <button class="call-devices-setup-component-advanced-close" v-on:click="showDevicesSelection = false">
172            <img src="/img/gui/close.svg" alt="Close button">
173          </button>
174
175          <div class="call-devices-setup-component-advanced-content">
176            <div class="call-devices-setup-component-advanced-group" v-bind:class="{ disabled: isVideoAvailable === false }" v-if="videoVisible === true">
177              <span class="call-devices-setup-component-advanced-group-title">
178                {{ $t("CAMERA") }}
179              </span>
180
181              <custom-select
182                class="call-devices-setup-component-advanced-group-select video-select"
183                no-options="No camera detected"
184                label-key="label"
185                value-key="deviceId"
186                v-bind:options="videoOptions"
187                v-bind:value="selectedVideo"
188                v-on:change="onVideoChanged">
189              </custom-select>
190
191              <custom-select
192                class="call-devices-setup-component-advanced-group-select video-resolution-select"
193                v-if="isMediasoup"
194                :options="cameraResolutions"
195                v-on:change="onVideoResolutionChanged"
196                value-key="value"
197                label-key="label"
198                :value="selectedVideoResolution">
199              </custom-select>
200
201              
202                <div v-if="!isMediasoup" class="call-devices-setup-component-advanced-group-toggle">
203                  <span>
204                    {{ $t("FORCE_720P") }}
205
206                    <help-icon
207                      additional-class="no-ellipsis"
208                      spacing-left
209                      v-bind:text="$t('VIDEO_RESOLUTION_TOOLTIP')"></help-icon>
210                  </span>
211
212                  <button v-on:click="toggle720p">
213                    <img v-if="videoForce720p" src="/img/gui/remoteEditOn.svg" alt="Toggle on">
214                    <img v-else src="/img/gui/remoteEditOff.svg" alt="Toggle off">
215                  </button>
216                </div>
217              
218            </div>
219
220            <div class="call-devices-setup-component-advanced-group" v-bind:class="{ disabled: isAudioOutputAvailable === false }" v-if="audioOutputVisible === true">
221              <span class="call-devices-setup-component-advanced-group-title">
222                {{ $t("SPEAKER") }}
223              </span>
224
225              <custom-select
226                class="call-devices-setup-component-advanced-group-select audio-output-select"
227                no-options="Default speaker selected"
228                label-key="label"
229                value-key="deviceId"
230                v-bind:options="audioOutputOptions"
231                v-bind:value="selectedAudioOutput"
232                v-on:change="onAudioOutputChanged">
233              </custom-select>
234
235              <div class="call-devices-setup-component-advanced-group-vu-meter">
236                <audio id="sound-test-audio" controls src="/sound/sound-test/test-speaker.mp3">Sound test</audio>
237                <button class="generic-rounded-button filled"
238                        v-on:click="testAudioOutput">
239                  <img src="/img/gui/join-call-dec-2022/soundTest.svg" alt="volume icon" />
240                    {{ $t("TEST") }}
241                </button>
242
243                <div class="vu-meter-item" v-for="level in 9" v-bind:class="{ on: media.preview.output.level > (level - 1) * 8 }"></div>
244              </div>
245            </div>
246
247            <div class="call-devices-setup-component-advanced-group" v-bind:class="{ disabled: isAudioInputAvailable === false }" v-if="audioInputVisible === true">
248              <span class="call-devices-setup-component-advanced-group-title">
249                {{ $t("MICROPHONE") }}
250              </span>
251
252              <custom-select
253                class="call-devices-setup-component-advanced-group-select audio-input-select"
254                no-options="No microphone detected"
255                label-key="label"
256                value-key="deviceId"
257                v-bind:options="audioInputOptions"
258                v-bind:value="selectedAudioInput"
259                v-on:change="onAudioInputChanged">
260              </custom-select>
261
262              <div class="call-devices-setup-component-advanced-group-vu-meter">
263                <div class="vu-meter-item" v-for="level in 12" v-bind:class="{ on: media.preview.audio.level > (level - 1) * 8 }"></div>
264              </div>
265            </div>
266          </div>
267        </div>
268      </div>
269    </section>
270  </div>
271</script>
271
272
273<script type="text/x-template" id="call-video-effects-component-template">
274
275  <div class="call-video-effects-component">
276    <div class="call-video-effects-component-selection">
277      <div class="call-video-effects-component-selection-item" v-on:click="setVideoEffect('none')">
278        <img src="/img/home/common/no-video-avatar.svg" class="call-video-effects-component-selection-item-no-video" alt="No video avatar" />
279
280        <video id="mediaVideoPreviewEffectNone"></video>
281
282        <img src="/img/gui/video-effect/check.svg" class="call-video-effects-component-selection-item-check" alt="" v-if="selectedEffect === 'none'" />
283
284        <div class="call-video-effects-component-selection-item-name">
285          <img src="/img/gui/video-effect/none.svg" class="call-video-effects-component-selection-item-icon" alt="" />
286
287          {{ $t('VIDEO_EFFECT_NONE') }}
288        </div>
289      </div>
290
291      <div class="call-video-effects-component-selection-item" v-on:click="setVideoEffect('blur')">
292        <img src="/img/home/common/no-video-avatar.svg" class="call-video-effects-component-selection-item-no-video blur" alt="No video avatar" />
293
294        <video id="mediaVideoPreviewEffectBlur"></video>
295
296        <img src="/img/gui/video-effect/check.svg" class="call-video-effects-component-selection-item-check" alt="" v-if="selectedEffect === 'blur'" />
297
298        <div class="call-video-effects-component-selection-item-name">
299          <img src="/img/gui/video-effect/blur.svg" class="call-video-effects-component-selection-item-icon" alt="" />
300
301          {{ $t('VIDEO_EFFECT_BLUR') }}
302        </div>
303      </div>
304    </div>
305
306    <div class="call-video-effects-component-title">
307      {{ $t('BLUR_VIDEO_BACKGROUND') }}
308
309      <help-icon
310        direction="bottom"
311        offset-y="10"
312        spacing-left
313        v-bind:nw-tooltip-text="$t('VIDEO_EFFECT_BLUR_HELP')"></help-icon>
314    </div>
315
316    <div class="call-video-effects-component-buttons">
317      <button class="rounded-button outlined call-video-effects-component-buttons-button" v-on:click="onCancel">
318        {{ $t('CANCEL') }}
319      </button>
320
321      <button class="rounded-button filled call-video-effects-component-buttons-button" v-on:click="onConfirm">
322        {{ $t('OK') }}
323      </button>
324    </div>
325  </div>
326</script>
326
327
328<script type="text/x-template" id="join-board-component-template">
329  <div class="join-board-component">
330    <section class="join-board-component-loading" v-if="showLoading === true">
331      <loading-spinner></loading-spinner>
332    </section>
333
334
335    <section class="join-board-login-prompt" v-if="showLoginPrompt === true">
336      <join-board-login-prompt></join-board-login-prompt>
337    </section>
338
339    <section class="join-board-component-sms" v-if="showSmsVerificationTab === true">
340      <join-board-sms
341        v-on:phoneverified="considerPhoneVerified">
342      </join-board-sms>
343    </section>
344
345    <section class="join-board-component-bankid" v-if="showBankIdTab === true">
346      <join-board-bankid
347        v-bind:board-id="boardId"
348        v-on:bankid-checked="bankIdChecked">
349      </join-board-bankid>
350    </section>
351
352    <section class="join-board-component-password" v-if="showPasswordTab === true">
353      <join-board-password
354        v-bind:board-id="boardId"
355        v-bind:isLoggedIn="isLoggedIn"
356        v-on:cancel="cancel"
357        v-on:password-checked="passwordChecked"
358        v-on:show-login="$emit('show-login')"
359        >
360      </join-board-password>
361    </section>
362
363    <section class="join-board-component-setup" v-if="showJoinBoardSetupTab === true">
364      <join-board-setup
365        v-bind:logged-in="isLoggedIn"
366        v-bind:bank-id-name="bankIdName"
367        v-bind:board-id="boardId"
368        v-bind:page-num="pageNum"
369        v-bind:has-cancel="hasCancel === true"
370        v-bind:has-call="hasCall === true"
371        v-bind:has-waiting-room="hasWaitingRoom === true"
372        v-bind:call-provider-type="callProviderType"
373        v-bind:socket-url="socketUrl"
374        v-on:cancel="cancel">
375      </join-board-setup>
376    </section>
377
378    <section class="join-board-deleted" v-if="showBoardDeleted">
379      <board-deleted-info
380        :title="$t('BOARD_IS_DELETED')"
381        :content="deletedPopUpContent"
382        :confirm-text="(boardCreator && boardTrash) ? $t('GO_TO_TRASH') : $t('OK')"
383        @close="cancel"
384        :can-restore-from-trash="boardTrash && boardCreator"
385        :show-cancel-button="(boardCreator && boardTrash)"
386        event-is-from="Home">
387      </board-deleted-info>
388    </section>
389
390    <section class="join-board-deleted" v-if="showBoardNotFound">
391      <board-deleted-info
392        :title="$t('MEETING_NOT_FOUND')"
393        :content="this.$t('CHECK_MEETING_LINK')"
394        :confirm-text="$t('OK')"
395        :show-cancel-button="false"
396        @close="cancel">
397      </board-deleted-info>
398    </section>
399  </div>
400</script>
400
401
402<script type="text/x-template" id="join-board-bankid-component-template">
403  <div class="join-board-bankid-component">
404    <div class="join-board-bankid-component-title">
405      <img src="/img/home/common/bankid.svg" alt="BankID logo" class="join-board-bankid-component-title-logo" />
406
407      {{ $t('JOIN_USING_BANKID') }}
408    </div>
409
410    <span class="join-board-bankid-component-text" v-html="$t('JOIN_USING_BANKID_INSTRUCTIONS')"></span>
411
412    <loading-spinner v-if="showLoading === true"></loading-spinner>
413
414    <div v-if="showQRCode === true" v-html="qrCode.svg()">
415      <!-- Will hold the QRCode -->
416    </div>
417
418    <div class="join-board-bankid-component-error" v-if="showError === true">
419      <img src="/img/home/common/exclamation-triangle.svg" alt="Exclamation triangle icon" class="join-board-bankid-component-error-image" />
420
421      <span class="join-board-bankid-component-error-text" v-html="$t('BANKID_LOGIN_CANCELED')"></span>
422    </div>
423
424    <div class="join-board-bankid-component-buttons">
425      <button class="rounded-button filled join-board-bankid-component-buttons-button" v-on:click="tryAgain" v-if="showError === true">
426        {{ $t('TRY_AGAIN') }}
427      </button>
428
429      <button class="rounded-button filled join-board-bankid-component-buttons-button" v-on:click="openBankId">
430        {{ $t('OPEN_BANKID_ON_THIS_DEVICE') }}
431      </button>
432    </div>
433  </div>
434</script>
434
435
436<script type="text/x-template" id="join-board-password-component-template">
437  <div class="join-board-password-component" v-bind:class="{ disabled: working === true }">
438    <span class="join-board-password-component-title">
439      {{ $t('PASSWORD') }}
440    </span>
441
442    <div class="join-board-password-wrapper">
443      <div class="join-board-password-component-input-container">
444        <img src="/img/home/common/password-key.svg" class="join-board-password-component-key" />
445
446        <password-input
447          ref="passwordInput"
448          class="join-board-password-component-input"
449          v-model="password"
450          v-bind:visible="passwordVisible === true"
451          v-bind:class="{ error: passwordError === true }"
452          v-bind:disabled="working === true"
453          v-bind:placeholder="$t('PASSWORD')"
454          v-on:keyup="validatePassword"
455          v-on:change="validatePassword"
456          v-on:keydown.enter="confirmPassword">
457        </password-input>
458
459        <img src="/img/home/common/eye-closed.svg" class="join-board-password-component-eye" v-show="passwordVisible === false" v-on:click="togglePasswordVisibility" />
460
461        <img src="/img/home/common/eye-open.svg" class="join-board-password-component-eye" v-show="passwordVisible === true" v-on:click="togglePasswordVisibility" />
462      </div>
463
464      <div class="err-message" v-show="wrongPasswordErr == true">
465        <span>{{ $t("PASSWORD_INCORRECT") }}</span>
466      </div>
467    </div>
468
469    <div class="join-board-password-component-buttons">
470      <button class="rounded-button outlined" v-on:click="cancelPassword(); buttonPressed('Join board with password modal', 'Cancel');">
471        {{ $t("CANCEL") }}
472      </button>
473
474      <button class="rounded-button filled" v-on:click="confirmPassword(); buttonPressed('Join board with password modal', 'Join');">
475        {{ $t("JOIN") }}
476      </button>
477    </div>
478    <div class="want-to-login" v-if="!isLoggedIn">
479      <i18n path="WANT_TO_LOGIN" tag="p">
480        <template v-slot:login>
481          <button class="login" @click="$emit('show-login'); buttonPressed('Join board with password modal', 'login')">{{ $t("LOGIN") }}</button>
482        </template>
483      </i18n>
484    </div>
485  </div>
486</script>
486
487
488<script type="text/x-template" id="join-board-setup-component-template">
489  <main class="join-board-setup-component" v-bind:class="{ disabled: joiningWithoutWaitingRoom === true }">
490    <call-devices-setup
491      v-bind:audio-input-enabled="audioEnabled"
492      audio-input-visible
493      audio-output-enabled
494      audio-output-visible
495      name-visible
496      v-bind:video-enabled="videoEnabled"
497      video-visible
498      v-bind:userlist="userList"
499      v-bind:show-users-on-board="showUsersOnBoard === true"
500      v-bind:users-on-board="usersOnBoard"
501      v-bind:call-provider-type="callProviderType"
502      v-bind:can-preview="canPreview === true"
503      v-bind:error-code="errorCode"
504      v-bind:has-media-capabilities="hasCall === true"
505      v-bind:name-enabled="canChangeName === true"
506      v-bind:user-name.sync="userName"
507      v-bind:user-name-error="userNameError === true"
508      v-bind:video-effect="selectedVideoEffect"
509      v-on:permissions-answered="permissionsAnswered"
510      v-on:audio-permission-changed="audioPermissionChanged"
511      v-on:video-permission-changed="videoPermissionChanged"
512      v-show="showCallDevicesSetup === true"
513      v-on:microphone-setting="microphoneSetting"
514      v-on:video-setting="videoSetting"
515      v-on:video-resolution-setting="videoResolutionSetting"
516      v-on:speaker-setting="speakerSetting"
517      v-on:effect-setting="videoEffectSetting"
518      v-on:join-board="joinBoard"
519      v-on:enable-camera="turnCamera"
520      v-on:enable-microphone="turnMicrophone"
521      >
522    </call-devices-setup>
523
524    <section>
525      <span class="join-board-setup-component-title" v-show="showTitle && showWaitingRoom" v-html="titleContent"></span>
526      <div class="join-board-setup-component-waiting-room" v-show="showWaitingRoom === true">
527
528        <img src="/img/home/common/waiting-room-creator-offline.svg" alt="Waiting room image" class="join-board-setup-component-waiting-room-image" v-show="waitingRoomCreatorOnline === false" />
529
530        <img src="/img/home/common/waiting-room-creator-online.svg" alt="Waiting room image" class="join-board-setup-component-waiting-room-image" v-show="waitingRoomCreatorOnline === true" />
531      </div>
532    </section>
533  </main>
534</script>
534
535
536<script type="text/x-template" id="join-board-sms-component-template">
537  <main>
538    <div class="join-board-sms-component-phone-entry" v-if="showingScreen === 'PHONE_NUMBER_ENTRY'">
539      <h4><strong>{{ $t("SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT1") }}</strong></h4>
540      <h4><strong>{{ $t("SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT2") }}</strong></h4>
541      <p>{{ $t("SMS_VERIFICATION_DISABLED_COUNTRIES") }}</p>
542      <p>{{ $t("SMS_VERIFICATION_HOST_REQUIRES_MSG") }}</p>
543      <sms-verify-entry-component
544        :action-button="$t('SMS_VERIFICATON_SEND_CODE')"
545        @update-phone-number="updatePhoneNumber"
546        @show-otp-modal="showNextScreen"/>
547    </div>
548
549    <div class="join-board-sms-component-otp-entry" v-if="showingScreen === 'OTP_ENTRY'">
550      <sms-verify-otp-entry-component
551        @show-otp-verified="showNextScreen"
552        :full-phone-number="phonenumber"/>
553    </div>
554
555    <div class="join-board-sms-component-verify-success" v-if="showingScreen === 'SMS_VERIFY_SUCCESS'">
556      <sms-verification-completed
557        @phone-verified="$emit('phoneverified')"
558        :subtitle1="$t('SMS_VERIFICATION_SUCCESS_SUBTITLE1', { 0: phonenumber })"
559        :subtitle2="$t('SMS_VERIFICATION_SUCCESS_SUBTITLE2')"/>
560    </div>
561
562    <div class="join-board-sms-component-consent" v-if="showingScreen === 'CONSENT'">
563      <sms-re-verification
564        :host-requires-msg="$t('SMS_VERIFICATION_HOST_REQUIRES_MSG')"
565        :concent-code-send="$t('SMS_VERIFICATON_CONSENT_CODE_SEND', {'0': phonenumber })"
566        :wrong-otp-entered="wrongOtpEntered"
567        @show-otp-modal="showNextScreen"
568        :phonenumber= "phonenumber"/>
569    </div>
570  </main>
571</script>
vendor: 1 bytes, line 571
571
572<script type="text/x-template" id="loading-spinner-component-template">
573  <div class="loading-spinner-component">
574    <img src="/img/home/common/loading-spinner.svg" alt="Loading spinner image" class="loading-spinner-component-image" v-bind:width="size" />
575  </div>
576</script>
576
577
578<script type="text/x-template" id="join-board-login-component-template">
579  <main class="join-board-login-component">
580    <h3>{{ $t("SMS_VERIFICATION_HOST_REQUIRES_MSG") }}</h3>
581    <button class="generic-rounded-button filled login-button" v-on:click="goToLogin">{{ $t("SMS_VERIFICATION_LOGIN") }}</button>
582    <button class="generic-rounded-button register-button" v-if="showRegister || showSignup" v-on:click="goToRegister">{{ $t("SMS_VERIFICATION_REGISTER") }}</button>
583  </main>
584</script>
584
585
586<!-- template for the NewModal component -->
587<script type="x/template" id="new-modal-template">
588<transition name="modal">
589  <div class="modal-mask" v-on:click="close" v-show="show">
590    <div class="new-modal-container" v-on:click.stop>
591      <slot></slot>
592    </div>
593  </div>
594</transition>
595</script>
595
596
597<script type="text/x-template" id="forgot-password-page-template">
598  <div class="forgot-password-page-wrapper">
599    <section class="forgot-password-page-form-wrapper" v-bind:class="{ disabled: working === true }" v-if="emailSent === false">
600      <span class="forgot-password-page-form-title">
601        {{ $t('FORGOT_YOUR_PASSWORD') }}
602      </span>
603
604      <span class="forgot-password-page-form-text" v-html="$t('FORGOT_YOUR_PASSWORD_INSTRUCTIONS')"></span>
605
606      <input
607        type="email"
608        name="username"
609        ref="emailInput"
610        v-model="email"
611        v-bind:class="{ error: emailError === true }"
612        v-bind:disabled="working === true"
613        v-bind:placeholder="$t('EMAIL')"
614        v-on:keyup="validateEmail"
615        v-on:change="validateEmail"
616        v-on:keydown.enter="confirmPasswordReset" />
617
618      <div class="forgot-password-page-buttons">
619        <button class="rounded-button outlined" v-on:click="cancelPasswordReset">
620          {{ $t("CANCEL") }}
621        </button>
622
623        <button class="rounded-button filled" v-on:click="confirmPasswordReset">
624          {{ $t('SEND_EMAIL') }}
625        </button>
626      </div>
627    </section>
628
629    <section class="forgot-password-page-email-sent-wrapper" v-if="emailSent === true">
630      <img
631        src="/img/home/guest/forgot/emailsent.svg"
632        alt="Email sent decorator image"
633        class="forgot-password-page-email-sent-image" />
634
635      <span class="forgot-password-page-email-sent-title">
636        {{ $t('FORGOT_YOUR_PASSWORD_CONFIRM_TITLE') }}
637      </span>
638
639      <p class="forgot-password-page-email-sent-subtitle" v-html="$t('FORGOT_YOUR_PASSWORD_CONFIRM_SUBTITLE')"></p>
640
641      <button class="rounded-button filled forgot-password-page-email-sent-login" v-on:click="goToLogin">
642        {{ $t('OK') }}
643      </button>
644    </section>
645  </div>
646</script>
646
647
648<script type="text/x-template" id="join-board-page-template">
649  <div class="join-board-page-wrapper">
650    <join-board has-cancel v-bind:board-id="boardId" v-bind:page-num="pageNum" @cancel="back" @show-login="showLoginModal = true"></join-board>
651    <login-modal :show="showLoginModal" v-on:close="showLoginModal = false"></login-modal>
652
653  </div>
654</script>
654
655
656<script type="text/javascript">
657  const legalLinks = {"dataProcessingAgreement":"https://www.nuiteq.com/privacy","privacyPolicy":"https://www.nuiteq.com/privacy","termsOfUse":"https://www.nuiteq.com/privacy"};
658</script>
658
659
660<script type="text/x-template" id="join-terms-page-template">
661  <join-terms></join-terms>
662</script>
662
663
664<script type="text/x-template" id="login-page-template">
665  <form class="create-form" id="login-form" method="POST" :action="loginActionString">
666    <h3 class="title" :class="{ 'margin-no-error': loginError !== true }">
667      {{ $t('LOGIN') }}
668    </h3>
669
670    <div v-if="googleSSOEnabled && isGoogleLoginAvailable" class="google-button" :class="{ 'margin-error': loginError === true }" v-on:click="doGoogleLogin">
671      <div>
672        <span class="icon"></span>
673        <span class="text">{{ $t('SIGN_IN_WITH_GOOGLE') }}</span>
674      </div>
675    </div>
676    <div v-else-if="googleSSOEnabled" class="google-button" :class="{ 'margin-error': loginError === true }" v-on:click="document.showCookiesHeader()" nw-tooltip-direction="top" nw-tooltip-offset-y="-10" :nw-tooltip-text="googleSignInDisabled">
677      <div>
678        <span class="icon"></span>
679        <span class="text">{{ $t('SIGN_IN_WITH_GOOGLE') }}</span>
680      </div>
681    </div>
682
683    <div v-if="microsoftSSOEnabled" class="microsoft-button" v-on:click="doMSLogin">
684      <div>
685        <span class="icon"></span>
686        <span class="text">{{ $t('SIGN_IN_WITH_MICROSOFT') }}</span>
687      </div>
688    </div>
689
690    <p class="loginError" v-if="loginError === true">
691      {{ $t('EMAIL_OR_PASSWORD_INCORRECT') }}
692    </p>
693
694    <div class="input-group">
695      <span class="email-placeholder-image"></span>
696
697      <input
698        class="create-user"
699        type="email"
700        name="username"
701        v-model="email"
702        v-bind:class="{ invalid: loginError === true || emailError === true }"
703        v-bind:placeholder="$t('EMAIL')"
704        v-on:keyup="loginError = false"
705        v-on:change="loginError = false"
706        v-on:keydown.enter="doLogin" />
707    </div>
708
709    <div class="input-group">
710      <span class="password-placholder-image-key"></span>
711
712      <password-input
713        class="create-password"
714        name="password"
715        autocomplete
716        v-model="password"
717        v-bind:class="{ invalid: (loginError === true || passwordError === true) }"
718        v-bind:placeholder="$t('PASSWORD')"
719        v-bind:visible="passwordVisible === true"
720        v-on:keyup="loginError = false"
721        v-on:change="loginError = false"
722        v-on:keydown.enter="doLogin">
723      </password-input>
724
725      <span
726        class="password-placholder-image-eye"
727        v-bind:class="{ 'password-placholder-image-eye-open': passwordVisible === true,
728        'password-placholder-image-eye-close': passwordVisible === false }"
729        v-on:click="passwordVisible = !passwordVisible">
730      </span>
731    </div>
732
733    <router-link v-if="window.location.pathname.startsWith('/board') === false" to="/forgot" class="forgot-password-link">
734      {{ $t('FORGOT_YOUR_PASSWORD') }}
735    </router-link>
736    <a :href="rootUrl.replace(/\/$/, '') + '/forgot'" class="forgot-password-link" v-else>
737      {{ $t('FORGOT_YOUR_PASSWORD') }}
738    </a>
739
740    <div @click="rememberMe = !rememberMe" class="checkbox-wrapper">
741      <div class="input checkbox">
742        <i class="fas fa-check" v-show="rememberMe"></i>
743      </div>
744      <p class="keep-signed-in">{{ $t('KEEP_ME_SIGNED_IN') }}</p>
745      <input type="checkbox" name="rememberMe" v-model="rememberMe" v-show="false">
746    </div>
747
748    
749
750    <button class="rounded-button filled login-button" v-on:click="doLogin">
751      {{ $t('LOG_IN') }}
752    </button>
753  </form>
754</script>
754
755
756<script type="text/x-template" id="join-page-template">
757  <div class="join-section-wrapper">
758    <div>
759      <img src="/img/home/guest/login/iconjoinmeeting.svg" alt="Join meeting" />
760
761      <p>{{ $t('OR_JOIN_A_MEETING') }}</p>
762    </div>
763
764    <div class="form-inner-wrapper">
765      <span class="keyboard-input-placeholder"></span>
766
767      <input
768        class="join-id"
769        type="text"
770        name="boardId"
771        v-model="boardId"
772        v-bind:class="{ error: errMsg.length > 0 }"
773        v-on:keydown.enter="joinBoard"
774        v-bind:placeholder="$t('ENTER_CODE_OR_LINK')"
775        autofocus />
776
777      <button class="rounded-button filled join-button" v-on:click="joinBoard">
778        {{ $t('JOIN') }}
779      </button>
780    </div>
781
782    <span class="err-message" v-html="errMsg"></span>
783
784    <board-deleted-info-popup
785      :show="showBoardDeletedModal"
786      :title="$t('BOARD_IS_DELETED')"
787      :content="$t('CONTACT_THE_PERSON_SENT_LINK')"
788      :confirm-text="$t('OK')"
789      @close="showBoardDeletedModal = false"
790      :show-cancel-button=false
791      event-is-from="Login page"
792    ></board-deleted-info-popup>
793  </div>
794</script>
794
795
796<script type="text/x-template" id="not-found-page-template">
797  <div class="home-guest-not-found-page-wrapper">
798    <img src="/img/home/common/not-found.svg" alt="Not found image" />
799
800    <span>
801      {{ $t("CANT_FIND_PAGE") }}
802    </span>
803
804    <span>
805      {{ $t("SORRY_FOR_INCONVENIENCE") }}
806    </span>
807
808    <router-link to="/">
809      {{ $t("TAKE_ME_HOME") }}
810    </router-link>
811  </div>
812</script>
812
813
814<script type="text/x-template" id="reset-password-template">
815  <section class="reset-password-loading" v-if="loading === true">
816    <img src="/img/gui/spinner_white.svg" class="loading-spinner" />
817  </section>
818
819  <section class="reset-password-form-wrapper" v-else-if="loading === false && resetPassword.successful === false">
820    <h2 class="reset-password-title">
821      {{ $t('RESET_PASSWORD') }}
822    </h2>
823
824    <p class="reset-password-subtitle">
825      {{ $t('RESET_PASSWORD_INSTRUCTIONS') }}
826    </p>
827
828    <div class="reset-password-input-group">
829      <span class="reset-password-placeholder-image"></span>
830
831      <password-input
832        ref="newPassword"
833        strength-indicator
834        v-model="resetPassword.newPassword"
835        v-bind:class="{ error: resetPassword.newPasswordError !== null,
836          disabled: resetPassword.working === true }"
837        v-bind:placeholder="$t('NEW_PASSWORD')"
838        v-bind:visible="newPasswordVisible === true"
839        v-on:blur="validateNewPassword" v-on:input="validateNewPassword">
840      </password-input>
841
842      <span
843        @click="newPasswordVisible = !newPasswordVisible"
844        class="reset-password-mask-eye"
845        v-bind:class="{ 'password-placholder-image-eye-open': newPasswordVisible === true,
846        'password-placholder-image-eye-close': newPasswordVisible === false }">
847      </span>
848    </div>
849
850    <div class="reset-password-input-group">
851      <span class="reset-password-placeholder-image"></span>
852
853      <password-input
854        ref="confirmPassword"
855        v-model="resetPassword.confirmPassword"
856        v-bind:class="{ error: resetPassword.confirmPasswordError !== null,
857          disabled: resetPassword.working === true }"
858        v-bind:placeholder="$t('CONFIRM_PASSWORD')"
859        v-bind:visible="confirmPasswordVisible === true"
860        v-on:blur="validateConfirmPassword" v-on:input="validateConfirmPassword">
861      </password-input>
862
863      <span
864        @click="confirmPasswordVisible = !confirmPasswordVisible"
865        class="reset-password-mask-eye"
866        v-bind:class="{ 'password-placholder-image-eye-open': confirmPasswordVisible === true,
867        'password-placholder-image-eye-close': confirmPasswordVisible === false }">
868      </span>
869    </div>
870
871    <p
872      class="reset-password-no-match-error"
873      v-if="resetPassword.confirmPasswordError !== null">
874      {{ resetPassword.confirmPasswordError }}
875    </p>
876
877    <button
878      class="rounded-button filled"
879      v-bind:class="{ 'on-error': resetPassword.confirmPasswordError !== null,
880                      disabled: resetPassword.confirmPasswordError !== null}"
881      @click="resetPasswordFn">
882        {{ $t('CONFIRM') }}
883    </button>
884  </section>
885
886  <section class="reset-password-successful-wrapper" v-else-if="resetPassword.successful === true">
887    <span class="reset-password-successful">
888      {{ $t('PASSWORD_RESET_SUCCESSFUL') }}
889    </span>
890
891    <button class="rounded-button filled" @click="goToLogin">
892      {{ $t('LOGIN') }}
893    </button>
894  </section>
895</script>
895
896
897<!-- template for the StickyControls component -->
898<script type="x/template" id="sticky-controls-component-template">
899  <div class="sticky-controls" v-show="show">
900    <div class="top-row">
901      <img class="icon" v-if="this.iconurl && this.iconurl.length > 0" :src="iconurl" alt="Notification icon">
902
903      <p v-html="this.message"></p>
904
905      <div class="sticky-controls-buttons">
906        <button class="generic-rounded-button filled sticky-ok" v-if="this.oktext && this.oktext.length > 0" v-on:click="turnon">
907          <img v-if="this.okiconurl && this.okiconurl.length > 0" :src="okiconurl" alt="Notification confirm">
908          <span>{{ this.oktext }}</span>
909        </button>
910
911        <button class="generic-rounded-button outlined sticky-cancel" v-if="this.canceltext && this.canceltext.length > 0" v-on:click="close">
912          <img v-if="this.canceliconurl && this.canceliconurl.length > 0" :src="canceliconurl" alt="Notification cancel">
913          <span>{{ this.canceltext }}</span>
914        </button>
915      </div>
916
917      <button class="close-button" v-on:click="close">
918        <img src="/img/gui/close.svg" alt="Close notification"/>
919      </button>
920    </div>
921    <div v-if="this.dontshowkey">
922      <dont-show-toggle :value.sync="dontShow" v-on:toggle="toggleDontShow" />
923    </div>
924  </div>
925</script>
925
926
927
928
929    <div id="app" class="home-guest-wrapper">
930      
931      <div id="master-top-notifications">
932        <div class="sticky-controls-container-guest">
933          <!-- NOTE: Include this where other sticky controls components are -->
934
935<div v-show="reconnectToBoard.show" class="reconnect-overlay-dark" v-cloak>
936  <sticky_controls_component
937    :show="reconnectToBoard.show"
938    v-on:close="reconnectToBoard.show = false"
939    v-on:turnon="reconnectToBoardAction()"
940    :message="$t('RECONNECT_TO_BOARD_NOTIFICATION')"
941    :oktext="$t('RECONNECT_TO_BOARD_ACTION')">
942  </sticky_controls_component>
943</div>
944
945        </div>
946      </div>
947      <div class="home-guest-locale-picker" @click="toggleShowLangDropdown()" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()" v-cloak>
948        <div class="home-guest-locale-item">
949          <img src="/img/gui/globe-regular-black.svg" class="home-guest-locale-icon" />{{ localeName }}
950        </div>
951        <div class="home-guest-locale-item-inactive" v-if="showLangDropdown">
952          <div v-if="showLangDropdown && locale !== 'en-us' && isLocaleValid('en-us')" v-on:click="setLocale('en-us')" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()">
953            {{ $t('ENGLISH') }}
954          </div>
955          <div v-if="showLangDropdown && locale !== 'sv-se' && isLocaleValid('sv-se')" v-on:click="setLocale('sv-se')" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()">
956            {{ $t('SVENSKA') }}
957          </div>
958          <div v-if="showLangDropdown && locale !== 'es-es' && isLocaleValid('es-es')" v-on:click="setLocale('es-es')" @mouseover="hoverShowLangDropdown()" @mouseleave="hoverLeaveShowLangDropdown()">
959            {{ $t('ESPANOL') }}
960          </div>
961        </div>
962      </div>
963
964      <div class="home-guest-wrapper-spacer"></div>
965
966      <div class="home-guest-container">
967        <div class="home-guest-container-left-panel" v-show="showLeftPanel === true" v-cloak>
968          <img src="/img/home/guest/nuiteq-logo.svg" alt="NUITEQ logo" class="home-guest-container-left-panel-nuiteq-logo" />
969
970          <div class="home-guest-container-left-panel-text" v-html="leftPanelText" v-show="leftPanelText !== null"></div>
971
972          <img v-bind:src="leftPanelImage" alt="Presentation image" class="home-guest-container-left-panel-presentation-image" v-if="leftPanelImage !== null" />
973
974          <div class="home-guest-container-left-panel-footer" v-html="leftPanelFooter" v-show="leftPanelFooter !== null"></div>
975        </div>
976
977        <div class="home-guest-container-right-panel">
978          <img src="/img/home/guest/logo.svg" class="home-guest-wrapper-logo" />
979
980          <router-view name="card1" class="home-guest-wrapper-content-card home-guest-wrapper-content-card-1"></router-view>
981
982          <router-view name="card2" class="home-guest-wrapper-content-card home-guest-wrapper-content-card-2"></router-view>
983        </div>
984      </div>
985
986      <div class="home-guest-wrapper-spacer"></div>
987
988      <div class="home-guest-wrapper-footer" v-cloak>
989        
990          <a :href="locale === 'sv-se' ? 'https://nuiteqstage.se' : 'https://nuiteqstage.se/en'" target="_blank" class="home-guest-wrapper-footer-item">
991            {{ $t('ABOUT') }}
992          </a>
993        
994
995        <span class="home-guest-wrapper-footer-separator">
996          |
997        </span>
998
999        
1000          <a :href="locale === 'sv-se' ? 'https://nuiteqstage.se/sakerhet' : 'https://docs.nuiteq.com/nuiteq-stage-sv/0/security/connecting-to-nuiteq-stage-is-secure'" target="_blank" class="home-guest-wrapper-footer-item">
1001            {{ $t('SECURITY') }}
1002          </a>
1003        
1004
1005        
1006
1007        
1008        <span class="home-guest-wrapper-footer-separator">
1009          |
1010        </span>
1011
1012        <a href="https://docs.nuiteq.com/nuiteq-stage/0/0/nuiteq-stage/" target="_blank" class="home-guest-wrapper-footer-item">
1013          {{ $t('GETTING_STARTED') }}
1014        </a>
1015        
1016
1017        <span class="home-guest-wrapper-footer-separator">
1018          |
1019        </span>
1020
1021        
1022          <a :href="locale === 'sv-se' ? 'https://www.nuiteq.com/sv/privacy' : 'https://www.nuiteq.com/privacy'" target="_blank" class="home-guest-wrapper-footer-item">
1023            {{ $t('PRIVACY') }}
1024          </a>
1025        
1026      </div>
1027    </div>
1028
1029    
1029<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/js.cookie.min.js" integrity="sha384-ZjQskekkFgZk0c62kpihN8ynzKbgSoJ4ZUAg8P72ujRhwChaKKc4gogqfS2qXWX2" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1029
1029
1030<script type="text/javascript">
1031  const CookiesApi = Cookies
1032                      .withAttributes({ expires: 365 * 10, sameSite: 'strict', path: '/', secure: (window.location.protocol === "https:") })
1033                      .withConverter({
1034                        read: value => decodeURIComponent(value),
1035                        write: value => encodeURIComponent(value)
1036                      });
1037</script>
vendor: 1 bytes, line 1037
1037
1038<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/[email protected]" integrity="sha384-cwVe6U8Tq7F/3JIj6xeDzOwuqeChcmRcdYqDGfoYmdAurw7L3f4dFHhEJKfxv96A" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1038
1038
1039<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/vue-i18n.min.js" integrity="sha384-f1fahYRkSuxHbag5UEHzFKTNH1WHQoqBz5LbqJexvA4rV/NJy6NPktwTTCEftmv4" crossorigin="anonymous"></script>
1039
1040
1041    
1041<script type="text/javascript" src="https://storage.nuiteqstage.com/nuiteq-stage/js/vue-router.js" integrity="sha384-UjTf8rxhQFTd2X9BO0mvzDGr0WQDvbWz1xJRsSUsjTm2KDdr7sSJVb4MtPJK+Dr9" crossorigin="anonymous"></script>
1041
1042
1043    
1044    
1044<script type="text/javascript">
1045      const csrfToken = 'f986d2c4-33e5-9940-4728-5667e11e5384';
1046      const userCsrf = '1fb1e94b-3b1e-b9be-ffde-d23d3623c11d';
1047      const profilename = "";
1048      const email = '';
1049      const loginError = false;
1050      const loginAttempts = 0;
1051      const googleSSOEnabled = false;
1052      const googleClientId = '564158516137-nutj6rt4recl83rjodar0qupc2mv4v4q.apps.googleusercontent.com';
1053      const microsoftSSOEnabled = false;
1054      const microsoftClientId = '81d919e6-0807-4a9b-9151-8fff3421036e';
1055      const rootUrl = '/';
1056      const mixPanelConfig = {};
1057      const locale = "en-us";
1058      const translations = {"en-us":{"GO_TO_WHITEBOARD":"Go to whiteboard","JOIN_CALL":"Join call","ENGLISH":"English","SVENSKA":"Svenska","ESPANOL":"Español","REMOTE_COLLABORATION":"Lightweight and remote collaboration","JOIN_MEETING":"Join a meeting","OR_JOIN_A_MEETING":"Or join a meeting","ENTER_CODE_OR_LINK":"Enter code or link","JOIN":"Join","CANT_FIND_PAGE":"It looks like we can't find the page that you are looking for.","SORRY_FOR_INCONVENIENCE":"We are sorry for the inconvenience.","TAKE_ME_HOME":"Take me back home","ABOUT":"About","SECURITY":"Security","REGISTER":"Register","GETTING_STARTED":"Getting started","VIDEO_TRAINING":"Video training","FORGOT_YOUR_PASSWORD_INSTRUCTIONS":"Enter your email address and we will send you<br />instructions to set a new password.","CANCEL":"Cancel","SEND_EMAIL":"Send email","FORGOT_YOUR_PASSWORD_CONFIRM_TITLE":"We've sent you an email,","FORGOT_YOUR_PASSWORD_CONFIRM_SUBTITLE":"Please click on the link in the email to set a new password.<br />The link expires after 60 minutes.","OK":"Ok","RESET_PASSWORD":"Reset password","RESET_PASSWORD_INSTRUCTIONS":"Password must be at least 8 characters","NEW_PASSWORD":"New password","CONFIRM_PASSWORD":"Confirm password","PASSWORD_MINIMUM_LENGTH":"Password should be minimum 8 characters","PASSWORDS_DO_NOT_MATCH":"Passwords do not match","CONFIRM":"Confirm","PASSWORD_RESET_SUCCESSFUL":"Password reset successful","JOIN_USING_BANKID":"Join using BankID","JOIN_USING_BANKID_INSTRUCTIONS":"Start the BankID app on your phone and press the QR code icon to scan the QR code.","BANKID_LOGIN_CANCELED":"Login canceled. Please try again by pressing the button below.","TRY_AGAIN":"Try again","OPEN_BANKID_ON_THIS_DEVICE":"Open BankID on this device","TEST_YOUR_SETUP":"Test your setup","CAMERA_IS_OFF":"Camera is off","YOUR_NAME":"Your name","VIDEO_AUDIO_SETTINGS":"Video and audio settings","CAMERA_AUDIO_SETTINGS":"C
1058amera and audio settings","CAMERA":"Camera","VIDEO_RESOLUTION_TOOLTIP":"Choose 720p camera resolution, if you have low bandwidth for improved performance","FORCE_720P":"Limit video feed to 720p","SPEAKER":"Speaker","MICROPHONE":"Microphone","TEST":"Test","USER_NAME_EMPTY_ERR":"Please add your name","USER_NAME_TAKEN_ERR":"This username is already taken, please choose another one.","ALLOW_ACCESS":"Please allow access to your mic and camera","PLEASE_WAIT_FOR_HOST_TO_JOIN":"Please wait for the host<br />to join the board...","PLEASE_WAIT_FOR_HOST_TO_LET_IN":"Please wait for the host<br />to let you in...","USERS_ON_BOARD":"{0}, {1} and {2} other users are on this board","USERS_ON_BOARD_THREE":"{0}, {1} and one other user are on this board","USERS_ON_BOARD_TWO":"{0} and {1} are on this board","USER_ON_BOARD":"{0} is on this board","NO_ONE_JOINED_YET":"No one is currently on this board","BOARD_ID_WRONG_FORMAT":"We don't recognise this, please try again","BOARD_ID_DOES_NOT_EXIST":"Meeting not found, please check that you entered</br>the meeting ID correctly","PRIVACY":"Privacy","DENY":"Deny","WANT_TO_LOGIN":"Do you want to {login}?","PASSWORD_INCORRECT":"Password is incorrect, please try again.","BLUR_VIDEO_BACKGROUND":"Blur video background","VIDEO_EFFECT_BLUR_HELP":"Blur your video background. You can later-onBRBRchange this in the settings, while on a call.","VIDEO_EFFECT_NONE":"None","VIDEO_EFFECT_BLUR":"Blur","JOIN_MEETING_TERMS":"By joining this meeting, I agree to the NUITEQ Stage Terms of Service and Privacy Policy at {0}","BOARD_IS_DELETED":"This board has been deleted","GO_TO_TRASH":"Go to Trash","CONTACT_THE_PERSON_SENT_LINK":"Please contact the person that sent you the link.","CHECK_MEETING_LINK":"Please check that the meeting link is correct","MEETING_NOT_FOUND":"Meeting not found","CAMERA_OFF_CLICK_TO_TURN_ON":"Camera is off. Click to turn camera on.","CAMERA_ON_CLICK_TO_TURN_OFF":"Camera is on. Click to turn camera off.","MICROPHONE_OFF_CLICK_TO_TURN_ON":"Microphone is off. Click to turn microphone on.","MICROPHONE_ON_CLICK_TO_TURN_OFF":"Microphone is on. Click to turn microphone off.","ADD_NAME":"Please add your name","NEED_MIC_TO_JOIN_CALL":"You need a connected microphone to be able to join a call.","CAN_USE_WHITEBOARD":"You can however still use the whiteboard","JOIN_CALL_TOOLTIP":"You will automatically join a call, if one is active.","GO_TO_WHITEBOARD_TOOLTIP":"If you go to the whiteboard, you have an option to join a call.","FIND_OUT_MORE_AT":"Find out more at: {0}","RECONNECT_TO_BOARD_NOTIFICATION":"You are accessing the board from from another tab or window.","RECONNECT_TO_BOARD_ACTION":"Open board here","CAMERA_SETTING_RESOLUTION_LOW":"Low","CAMERA_SETTING_RESOLUTION_MEDIUM":"Medium","CAMERA_SETTING_RESOLUTION_HIGH":"High (HD)","CAMERA_SETTING_RESOLUTION_VERY_HIGH":"Very high (FHD)","CAMERA_SETTING_RESOLUTION_ULTRA":"Ultra (UHD)","COOKIES_CONSENT_1":"Our website uses cookies to provide you with the best possible experience.","COOKIES_CONSENT_2":"We do not make this information available to third parties.","LEARN_MORE":"Learn more","ALLOW_COOKIES":"Allow all cookies","LOGIN":"Login","SIGN_IN_WITH_GOOGLE":"Sign in with Google","SIGN_IN_WITH_GOOGLE_DISABLED":"Sign in with Google is disabled, to enable it you must allow all cookies.","CLICK_TO_MANAGE_COOKIES":"Click to manage cookies.","SIGN_IN_WITH_MICROSOFT":"Sign in with Microsoft","EMAIL_OR_PASSWORD_INCORRECT":"The email address or password is incorrect","EMAIL":"Email","PASSWORD":"Password","FORGOT_YOUR_PASSWORD":"Forgot your password?","KEEP_ME_SIGNED_IN":"Keep me signed in","LOG_IN":"Log in","PASSWORD_STRENGTH_INDICATOR_BLANK":"Blank","PASSWORD_STRENGTH_INDICATOR_WEAK":"Weak","PASSWORD_STRENGTH_INDICATOR_AVERAGE":"Average","PASSWORD_STRENGTH_INDICATOR_STRONG":"Strong","PASSWORD_STRENGTH_INDICATOR_TOOLTIP":"Include capital letters, special characters andBRBRnumbers to increase your password strength.","VERIFICATION_ENABLE":"Enable verification","VERIFICATION_ENABLE_TOOLTIP":"Enable sms verification or BankID verification for the board.","SMS_VERIFICATION_ENABLE":"Require phone number to verify via SMS to join this board","SMS_VERIFICATION_ENABLE_TOOLTIP":"Require phone number to verify via SMS to join this board.","SMS_VERIFICATION_HOST_REQUIRES_MSG":"The host requires phone verification to join this board.","SMS_VERIFICATION_LOGIN":"Already have an account? Login","SMS_VERIFICATION_REGISTER":"Don't have an account? Register","SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT1":"Please fill out your mobile phone number.","SMS_VERIFICATION_ENTER_PHONE_NUMBER_TEXT2":"We will then SMS you a verification code.","SMS_VERIFICATION_DISABLED_COUNTRIES":"* Currently US/Canad
1058a numbers are not supported for phone verification. Please contact the person that you received the join link from.","SMS_VERIFICATON_CONSENT_CODE_SEND":"Press 'Send code' to receive a code on the phone number associated with your account: [{0}]","SMS_VERIFICATON_SEND_CODE":"Send code","SMS_VERIFICATION_ENTER_CODE_RECEIVED":"Fill out the verification code that you received on your mobile phone.","SMS_VERIFICATION_INCORRECT":"The verification code is incorrect, please try again.","SMS_VERIFICATION_CODE_SENT_TO":"Code sent to: {0}","SMS_VERIFICATION_RESEND_CODE":"Resend code","SMS_VERIFICATION_VERIFY_CODE":"Verify","SMS_VERIFICATION_SUCCESS_TITLE":"Congrats!","SMS_VERIFICATION_SUCCESS_SUBTITLE1":"Your phone number {0} has been successfully verified.","SMS_VERIFICATION_SUCCESS_SUBTITLE2":"Press 'Ok' to join the board.","SMS_VERIFICATION_OK":"Ok","PHONE_FIELD_PLACEHOLDER":"Mobile phone number","SMS_VERIFICATION_WRONG_OTP":"The OTP you entered was incorrect, please request a new OTP"}};
1059      const translationsEnabled = true;
1060      const supportedLocales = ["en-us","sv-se"];
1061      const showRegister = false;
1062      const showSignup = true;
1063      const features = {"allowSharingToAnyone":{"enabled":false},"objectDeleteShortcut":{"enabled":true},"shapeTool":{"enabled":true},"translations":{"enabled":true,"defaultLocale":"sv-se","locales":["en-us","sv-se"]},"redeemLicenseCode":{"enabled":true},"autoAlignment":{"enabled":true},"coHost":{"enabled":true},"connectors":{"enabled":true},"videoEffects":{"enabled":false},"feedbackReactions":{"enabled":true},"exportAsImages":{"enabled":true,"host":"188.240.223.244"},"forceWebcamResolution":{"enabled":true},"supportPage":{"enabled":true,"recipients":"[email protected]"},"setupPage":{"enabled":true,"allowed":["[email protected]","[email protected]","[email protected]","[email protected]","[email protected]"]},"stripePayments":{"test":{"secretKey":"","priceId":""},"prod":{"secretKey":"","priceId":""}},"e2ee":{"salt":"y8qTLmp8r4Z8AUDSDWtVLUp3nqCTcCyV","enabled":false},"sfwLessons":{"enabled":true,"loginURL":"https://snow.live/stage/login","lessonScoreEnabled":true},"handwritingRecognition":{"enabled":false},"emoji":{"debug":false},"matrixWidget":{"enabled":false}};
1064      const redirectOnLogin = '';
1065      const sameSiteSetting = 'None';
1066      const guestIndexLeftPanelDataTranslated = {"image":"/img/home/guest/presentation.png","link":"https://nuiteq.com/stage","linkText":"NUITEQ.com/Stage","text":"Discover NUITEQ Stage - your ultimate meeting partner with whiteboard at the center!\n\nAre you ready to take your meetings and work processes to the next level? NUITEQ Stage is the answer you've been looking for. We have digitalized the meeting process to create a smooth and engaging work environment that not only increases productivity but also promotes creativity and sustainability."};
1067    </script>
1067
1068
1069    
1069<script type="text/javascript" src="/js/homeGuest.js"></script>
1069
1070  </body>
1071</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.