25.5 C
Singapore
HomeForex NewsExamine S&P 500 Historic Averages In opposition to Present Points, Greenback Wobble...

Examine S&P 500 Historic Averages In opposition to Present Points, Greenback Wobble at Decade Highs


S&P 500, VIX, Occasion Danger, Central Banks, Greenback and USDJPY Speaking Factors

:

  • The Market Perspective: S&P 500 Bearish Under 4,100; EURUSD Bullish Above 1.0000
  • A rebound in ‘danger belongings’ within the second half of this previous week leans in opposition to each seasonal (market situations) and elementary expectations
  • Whereas there are a number of vital elementary updates forward that can faucet into development discussions, my high concern forward will maintain on charge hypothesis

Trade Smarter – Sign up for the DailyFX Newsletter

Receive timely and compelling market commentary from the DailyFX team

Subscribe to Newsletter

A Flip that Defies Seasonal Expectations

As we transfer deeper into the Fall buying and selling session that traditionally brings higher market participation and volatility – and a intently adopted common for S&P 500 efficiency – it’s value highlighting the distinction we might see by the second half of this previous week. Regardless of the unrelenting warnings of main central banks of additional tightening forward and fears of financial pressure transferring ahead, there was however a robust rebound from the US indices and different sentiment outlined market measures. From the S&P 500 itself, a 3.7 % climb by Friday represented the primary optimistic efficiency in 4 weeks whereas the three-day tempo by Friday hits a tempo (4 percent-plus) that matches comparable situations that topped or prolonged their climb by 2022. On a technical foundation, the markets are nonetheless very early in mounting a restoration and the elemental burden is sort of as critical because the seasonal assumptions.

Chart of S&P 500 with Quantity, 20 and 200-Day- SMAs in addition to 3-Day ROC (Every day)

Chart Created on Tradingview Platform

In my very own hierarchy of analytical significance, I imagine ‘market situation’s ought to be the primary concern adopted by both elementary or technical evaluation. Inside situations, I imagine participation and the predisposition (eg seasonality) in the direction of sure danger developments can considerably alter the way in which merchants and buyers soak up exterior market stimulus. As a reminder, the month of September has traditionally seen an increase in quantity for my most popular, imperfect measures of sentiment – the S&P 500 – and additionally it is the start of the crest in volatility. What many will probably be transfixed on although is the one loss averaged out by through calendar months in an evaluation stretching again to 1990. ‘This time is completely different’ is a crucial name to scrutiny, however the averages ought to nonetheless hold us dialed in.

Chart of S&P 500 Common Month-to-month Change, Quantity and Volatility from 1980 to Current

Chart Created by John Kicklighter

Volatility and normal participation metrics can extra readily verify to historic averages owing to motion of funds dictated by societal norms. That mentioned, directional concerns shares far higher reliance on the distinctive elementary issues of the present period. Although, if that’s our standards, there’s not a lot in the way in which of great help for these with a long-term bullish bias. Whereas the concern of recession has abated considerably for the US and overseas, it’s removed from absolutely evaporating. Additional, central banks are making a really concerted effort to warn of tighter monetary situations forward. It’s after all potential to push by these headwind, however the historic norms of three weeks of losses averaged from week 37 to 39 will draw some critical scrutiny.

Chart of S&P 500 Weekly Efficiency Averaged from 1900 to Current

Chart Created by John Kicklighter

What to Look ahead to a Massive Image Evaluation

Looking over the approaching week’s financial docket, there’s loads of high-level occasion danger that may cost volatility; however the potential to transition into systemic currents is usually reserved for only some crucial themes. Recession fears stays a lurking menace in my estimation; so some key occasion danger ought to be famous in our collective calendars. The UK GDP and GDP tracker on Monday is adopted by New Zealand’s official 2Q GDP launch Wednesday, US retail gross sales on Thursday and the Chinese language August knowledge run on Friday. As vital as this run is, it’s possible simpler for financial coverage issues to escalate in sentiment. The Financial institution of England (BOE) charge resolution has been pushed again per week in honor of Queen Elizabeth’s passing, however the UK continues to be due inflation figures. That knowledge pales compared to the worldwide attain of the US CPI on Tuesday although.

Calendar of Main Macro Financial Occasions

Calendar Created by John Kicklighter

Financial coverage stays a high catalyzer on the elemental aspect, however there are a couple of methods to judge the data. For FX merchants and different international macro contributors, the distinction between overt hawks and doves is interesting fodder for hypothesis. Nevertheless, my pursuits are extra systemic in nature. There was a robust motivation for danger taking that has on the very least borrowed some confidence from the world’s central banks massively build up their steadiness sheets over the previous decade. The correlation between the S&P 500 and combination central financial institution stimulus appears much less like happenstance to me. Given all of the rhetoric from the main gamers to hike charges till inflation is tamed whereas sure gamers from the Fed and ECB weigh steadiness sheet reductions, there’s critical blowback that will begin from right here.

Chart of Combination Main Central Financial institution Stability Sheets in US$ Overlaid with S&P 500 (Month-to-month)

Chart Created by John Kicklighter with Information from St Louis Federal Reserve Financial Database

The Relative Consideration

Whereas I think about a systemic shift in international financial coverage a severely vital developments to observe, there stays an virtually occult curiosity round relative rate of interest projections among the many majors. This previous week, the ECB (75bp), Financial institution of Canada (75bp) and RBA (50bp) all hiked and met expectations. But, that wouldn’t innately transfer merchants who’re underwhelmed by ‘in-line’ consequence. What’s extra, with so lots of the high centra banks pursuing hawkish polices to get again forward of inflation, there isn’t a lot disparity to see this direct them come up to ceaselessly nor aggressively.

Chart of Relative Financial Coverage Standing with Yr-Finish Fee Forecast from Swaps

Chart Created by John Kicklighter

In trying by the dimensions of relative financial coverage standings, it’s exceptional how comparable the present charge and forecasts are for the likes of the Greenback, Pound, Canadian Dollar, Australia and New Zealand currencies. Transferring in the direction of an inflation struggle appears the norm. Nevertheless, there stays a really distinct contrasting counterpart to the hawkish cost. Whereas so many authorities are the midst of sturdy tightening and warnings for what lies forward, I imagine USDJPY is a very helpful gauge to observe. The distinction of ‘danger developments’, development potential and capital pressures all come into the equation forward.

Recommended by John Kicklighter

How to Trade USD/JPY

Chart of USDJPY with 20, 200-Day SMAs and 1-Day Fee of Change (Every day)

Chart Created on Tradingview Platform

!function(){function errMsg(errCode,msg)var baseUrl,lastSepIndex,hasSymbol=”undefined”!=typeof Symbol,hasSelf=”undefined”!=typeof self,hasDocument=”undefined”!=typeof document,envGlobal=hasSelf?self:global;!hasDocument||(lastSepIndex=document.querySelector(“base[href]”))&&(baseUrl=lastSepIndex.href),baseUrl||”undefined”==typeof location||-1!==(lastSepIndex=(baseUrl=location.href.split(“#”)[0].split(“?”)[0]).lastIndexOf(“/”))&&(baseUrl=baseUrl.slice(0,lastSepIndex+1));var backslashRegEx=//g;function resolveIfNotPlainOrUrl(relUrl,parentUrl)if(“/”===(relUrl=-1!==relUrl.indexOf(“”)?relUrl.replace(backslashRegEx,”/”):relUrl)[0]&&”/”===relUrl[1])return parentUrl.slice(0,parentUrl.indexOf(“:”)+1)+relUrl;if(“.”===relUrl[0]&&(“/”===relUrl[1]function resolveUrl(relUrl,parentUrl)function resolveAndComposePackages(packages,outPackages,baseUrl,parentMap,parentUrl)for(var p in packages)rhs,parentUrl))?outPackages[resolvedLhs]=mapped:targetWarning(“W1″,p,rhs,”bare specifier did not resolve”))function getMatch(path,matchObj)if(matchObj[path])return path;var sepIndex=path.length;dovar segment=path.slice(0,sepIndex+1);if(segment in matchObj)return segmentwhile(-1!==(sepIndex=path.lastIndexOf(“/”,sepIndex-1)))function applyPackages(id,pkg)var pkgName=getMatch(id,pkg);if(pkgName)pkg=pkg[pkgName];if(null!==pkg)return id.length>pkgName.length&&”/”!==pkg[pkg.length-1]?void targetWarning(“W2″,pkgName,pkg,”should have a trailing ‘/'”):pkg+id.slice(pkgName.length)function targetWarning(code,match,target,msg)console.warn(errMsg(code,”Package target “+msg+”, resolving target ‘”+target+”‘ for “+match))function resolveImportMap(importMap,resolvedOrPlain,parentUrl)var toStringTag=hasSymbol&&Symbol.toStringTag,REGISTRY=hasSymbol?Symbol():”@”;function SystemJS()this[REGISTRY]=var lastRegister,systemJSPrototype=SystemJS.prototype;function loadToId(load)return load.idfunction triggerOnload(loader,load,err,isErrSource)if(loader.onload(err,load.id,load.d&&load.d.map(loadToId),!!isErrSource),err)throw errfunction getOrCreateLoad(loader,id,firstParentUrl){var load=loader[REGISTRY][id];if(load)return load;var importerSetters=[],ns=Object.create(null);toStringTag&&Object.defineProperty(ns,toStringTag,value:”Module”);var instantiatePromise=Promise.resolve().then(function()return loader.instantiate(id,firstParentUrl)).then(function(registration)if(!registration)throw Error(errMsg(2,”Module “+id+” did not instantiate”));var declared=registration[1](function _export(name,value)var changed=!(load.h=!0);if(“string”==typeof name)name in ns&&ns[name]===value,2===registration[1].length?import:function(importId)return loader.import(importId,id),meta:loader.createContext(id):void 0);return load.e=declared.execute,function(err)throw load.e=null,load.er=err,triggerOnload(loader,load,err,!0),err),linkPromise=instantiatePromise.then(function(instantiation)return Promise.all(instantiation[0].map(function(dep,i)var setter=instantiation[1][i];return Promise.resolve(loader.resolve(dep,id)).then(function(depId)var depLoad=getOrCreateLoad(loader,depId,id);return Promise.resolve(depLoad.I).then(function()setter(depLoad.n)),depLoad)))).then(function(depLoads)load.d=depLoads));return load=loader[REGISTRY][id]=id:id,i:importerSetters,n:ns,I:instantiatePromise,L:linkPromise,h:!1,d:void 0,e:void 0,er:void 0,E:void 0,C:void 0,p:void 0}systemJSPrototype.import=function(id,parentUrl){var loader=this;return Promise.resolve(loader.prepareImport()).then(function()return loader.resolve(id,parentUrl)).then(function(load){load=getOrCreateLoad(loader,load);return load.C||function topLevelLoad(loader,load){return load.C=function instantiateAll(loader,load,parent,loaded)if(!loaded[load.id])return loaded[load.id]=!0,Promise.resolve(load.L).then(function()).catch(function(err)if(load.er)throw err;throw load.e=null,triggerOnload(loader,load,err,!1),err)(loader,load,load,).then(function(){return function postOrderExec(loader,load,seen)if(seen[load.id])return;seen[load.id]=!0;if(!load.e)if(load.er)throw load.er;return load.E?load.E:void 0var depLoadPromises;load.d.forEach(function(depLoad)try[]).push(depLoadPromise)catch(err)throw load.e=null,load.er=err,triggerOnload(loader,load,err,!1),err);if(depLoadPromises)return Promise.all(depLoadPromises).then(doExec);return doExec();function doExec()tryvar execPromise=load.e.call(nullContext);if(execPromise)return execPromise=execPromise.then(function()load.C=load.n,load.E=null,triggerOnload(loader,load,null,!0),function(err)throw load.er=err,load.E=null,triggerOnload(loader,load,err,!0),err),load.E=execPromise;load.C=load.n,load.L=load.I=void 0catch(err)throw load.er=errfinallyload.e=null,triggerOnload(loader,load,load.er,!0)(loader,load,)}).then(function()return load.n)}(loader,load)})},systemJSPrototype.createContext=function(parentId)var loader=this;returnurl:parentId,resolve:function(id,parentUrl)return Promise.resolve(loader.resolve(id,parentUrl,systemJSPrototype.onload=function(),systemJSPrototype.register=function(deps,declare)lastRegister=[deps,declare],systemJSPrototype.getRegister=function()var _lastRegister=lastRegister;return lastRegister=void 0,_lastRegister;var nullContext=Object.freeze(Object.create(null));envGlobal.System=new SystemJS;var baseOrigin,lastAutoImportDeps,lastAutoImportTimeout,importMapPromise=Promise.resolve(),importMap=imports:,scopes:,depcache:,integrity:,processFirst=hasDocument;function processScripts(){[].forEach.call(document.querySelectorAll(“script”),function(script)(“systemjs-module”===script.type?(script.sp=!0,script.src&&System.import(“import:”===script.src.slice(0,7)?script.src.slice(7):resolveUrl(script.src,baseUrl)).catch(function(e)var event;return-1<e.message.indexOf("https://git.io/JvFET#3")&&((event=document.createEvent("Event")).initEvent("error",!1,!1),script.dispatchEvent(event)),Promise.reject(e))):"systemjs-importmap"===script.type&&(script.sp=!0,fetchPromise=script.src?fetch(script.src,integrity:script.integrity).then(function(res)if(!res.ok)throw Error("Invalid status code: "+res.status);return res.text()).catch(function(err)return err.message=errMsg("W4","Error fetching systemjs-import map "+script.src)+"n"+err.message,console.warn(err),"function"==typeof script.onerror&&script.onerror(),""):script.innerHTML,importMapPromise=importMapPromise.then(function()return fetchPromise).then(function(text)))))}systemJSPrototype.prepareImport=function(doProcessScripts)return(processFirst,hasDocument&&(processScripts(),window.addEventListener("DOMContentLoaded",processScripts)),hasDocument&&(window.addEventListener("error",function(evt)lastWindowErrorUrl=evt.filename,lastWindowError=evt.error),baseOrigin=location.origin),systemJSPrototype.createScript=function(url)var script=document.createElement("script");script.async=!0,url.indexOf(baseOrigin+"/")&&(script.crossOrigin="anonymous");var integrity=importMap.integrity[url];return integrity&&(script.integrity=integrity),script.src=url,script;var lastWindowErrorUrl,lastWindowError,autoImportCandidates=,systemRegister=systemJSPrototype.register;systemJSPrototype.register=function(deps,declare)var scripts,lastScript,loader;return hasDocument&&"loading"===document.readyState&&"string"!=typeof deps?(scripts=document.querySelectorAll("script[src]"),(lastScript=scripts[scripts.length-1])&&(lastScript.src,lastAutoImportDeps=deps,loader=this,lastAutoImportTimeout=setTimeout(function()autoImportCandidates[lastScript.src]=[deps,declare],loader.import(lastScript.src)))):lastAutoImportDeps=void 0,systemRegister.call(this,deps,declare),systemJSPrototype.instantiate=function(url,firstParentUrl)var autoImportRegistration=autoImportCandidates[url];if(autoImportRegistration)return delete autoImportCandidates[url],autoImportRegistration;var loader=this;return new Promise(function(resolve,reject)var script=systemJSPrototype.createScript(url);script.addEventListener("error",function()reject(Error(errMsg(3,"Error loading "+url+(firstParentUrl?" from "+firstParentUrl:""))))),script.addEventListener("load",function()var register;document.head.removeChild(script),lastWindowErrorUrl===url?reject(lastWindowError):((register=loader.getRegister())&&register[0]===lastAutoImportDeps&&clearTimeout(lastAutoImportTimeout),resolve(register))),document.head.appendChild(script)),systemJSPrototype.shouldFetch=function()return!1,"undefined"!=typeof fetch&&(systemJSPrototype.fetch=fetch);var instantiate=systemJSPrototype.instantiate,jsContentTypeRegEx=/^(text|application)/(x-)?javascript(;|$)/;systemJSPrototype.instantiate=function(url,parent)var loader=this;return this.shouldFetch(url)?this.fetch(url,credentials:"same-origin",integrity:importMap.integrity[url]).then(function(res)if(!res.ok)throw Error(errMsg(7,res.status+" "+res.statusText+", loading "+url+(parent?" from "+parent:"")));var contentType=res.headers.get("content-type");if(!contentType):instantiate.apply(this,arguments),systemJSPrototype.resolve=function(id,parentUrl);var systemInstantiate=systemJSPrototype.instantiate;systemJSPrototype.instantiate=function(url,firstParentUrl)var preloads=importMap.depcache[url];if(preloads)for(var i=0;inew Promise((resolve,reject)=>var fulfilled=value=>trystep(generator.next(value))catch(e)reject(e),rejected=value=>trystep(generator.throw(value))catch(e)reject(e),step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next()));function raise(errorConstructor,message,name)throw new errorConstructor(“Failed to execute ‘requestSubmit’ on ‘HTMLFormElement’: “+message+”.”,name)!function()if(void 0!==window.Reflect&&void 0!==window.customElements&&!window.customElements.polyfillWrapFlushCallback)const BuiltInHTMLElement=HTMLElement,wrapperForTheName_HTMLElement=function HTMLElement2()return Reflect.construct(BuiltInHTMLElement,[],this.constructor);window.HTMLElement=wrapperForTheName_HTMLElement,HTMLElement.prototype=BuiltInHTMLElement.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,BuiltInHTMLElement)(),”function”!=typeof(Turbo$1=HTMLFormElement.prototype).requestSubmit&&(Turbo$1.requestSubmit=function(submitter)submitter?(function validateSubmitter(submitter,form)(submitter,this),submitter.click()):((submitter=document.createElement(“input”)).type=”submit”,submitter.hidden=!0,this.appendChild(submitter),submitter.click(),this.removeChild(submitter)));const submittersByForm=new WeakMap;function clickCaptured(submitter)submitter=function findSubmitterFromClickTarget(candidate)const element=candidate instanceof Element?candidate:candidate instanceof Node?candidate.parentElement:null;return”submit”==(null==(candidate=element?element.closest(“input, button”):null)?void 0:candidate.type)?candidate:null(submitter.target);submitter&&submitter.form&&submittersByForm.set(submitter.form,submitter)!function()if(!(“submitter”in Event.prototype))let prototype;if(“SubmitEvent”in window&&/Apple Computer/.test(navigator.vendor))prototype=window.SubmitEvent.prototype;elseif(“SubmitEvent”in window)return;prototype=window.Event.prototypeaddEventListener(“click”,clickCaptured,!0),Object.defineProperty(prototype,”submitter”,get()if(“submit”==this.type&&this.target instanceof HTMLFormElement)return submittersByForm.get(this.target))(),(dfxGdprChecker=FrameLoadingStyle=FrameLoadingStyle||).eager=”eager”,dfxGdprChecker.lazy=”lazy”;class FrameElement extends HTMLElementconstructor()super(),this.loaded=Promise.resolve(),this.delegate=new FrameElement.delegateConstructor(this)static get observedAttributes()return[“disabled”,”loading”,”src”]connectedCallback()this.delegate.connect()disconnectedCallback()this.delegate.disconnect()reload()varsrc=this;this.src=null,this.src=srcattributeChangedCallback(name)”loading”==name?this.delegate.loadingStyleChanged():”src”==name?this.delegate.sourceURLChanged():this.delegate.disabledChanged()get src()return this.getAttribute(“src”)set src(value)value?this.setAttribute(“src”,value):this.removeAttribute(“src”)get loading()””)set loading(value)value?this.setAttribute(“loading”,value):this.removeAttribute(“loading”)get disabled()return this.hasAttribute(“disabled”)set disabled(value)value?this.setAttribute(“disabled”,””):this.removeAttribute(“disabled”)get autoscroll()return this.hasAttribute(“autoscroll”)set autoscroll(value)value?this.setAttribute(“autoscroll”,””):this.removeAttribute(“autoscroll”)get complete()return!this.delegate.isLoadingget isActive()return this.ownerDocument===document&&!this.isPreviewget isPreview()void 0===_b?void 0:_b.documentElement)function expandURL(locatable)return new URL(locatable.toString(),document.baseURI)function getAnchor(anchorMatch)return anchorMatch.hash?anchorMatch.hash.slice(1):(anchorMatch=anchorMatch.href.match(/#(.*)$/))?anchorMatch[1]:void 0function getAction(form,submitter)function getExtension(url)function isPrefixedBy(baseURL,prefix)baseURL.href.startsWith(prefix)function locationIsVisitable(location2,rootLocation)return isPrefixedBy(location2,rootLocation)&&function isHTML(url).(?:htm(location2)function getRequestURL(url)var anchor=getAnchor(url);return null!=anchor?url.href.slice(0,-(anchor.length+1)):url.hreffunction toCacheKey(url)return getRequestURL(url)class FetchResponseconstructor(response)this.response=responseget succeeded()return this.response.okget failed()return!this.succeededget clientError()return 400<=this.statusCode&&this.statusCode<=499get serverError()return 500<=this.statusCode&&this.statusCoderequestAnimationFrame(()=>resolve()))function parseHTMLDocument(html=””)return(new DOMParser).parseFromString(html,”text/html”)function unindent(strings,…match)const lines=function interpolate(strings,values)return strings.reduce((result,string,i)=>return result+string+(null==values[i]?””:values[i]),””)(strings,match).replace(/^n/,””).split(“n”);match=lines[0].match(/^s+/);const indent=match?match[0].length:0;return lines.map(line=>line.slice(indent)).join(“n”)function uuid()13==ifunction getAttribute(attributeName,…elements)for(const value of elements.map(element=>null==element?void 0:element.getAttribute(attributeName)))if(“string”==typeof value)return value;return nullfunction markAsBusy(…elements)for(const element of elements)”turbo-frame”==element.localName&&element.setAttribute(“busy”,””),element.setAttribute(“aria-busy”,”true”)function clearBusyState(…elements)for(const element of elements)”turbo-frame”==element.localName&&element.removeAttribute(“busy”),element.removeAttribute(“aria-busy”)(Turbo$1=FetchMethod=FetchMethod||)[Turbo$1.get=0]=”get”,Turbo$1[Turbo$1.post=1]=”post”,Turbo$1[Turbo$1.put=2]=”put”,Turbo$1[Turbo$1.patch=3]=”patch”,Turbo$1[Turbo$1.delete=4]=”delete”;class FetchRequest{constructor(delegate,method,location2,body=new URLSearchParams,target=null)this.abortController=new AbortController,this.resolveRequestPromise=value=>,this.delegate=delegate,this.method=method,this.headers=this.defaultHeaders,this.body=body,this.url=location2,this.target=targetget location()return this.urlget params()return this.url.searchParamsget entries()return this.body?Array.from(this.body.entries()):[]cancel()this.abortController.abort()perform()return __async$4(this,null,function*()var _a,_b,fetchOptions=this;null!==(_b=(_a=this.delegate).prepareHeadersForRequest)&&void 0!==_b&&_b.call(_a,this.headers,this),yield this.allowRequestToBeIntercepted(fetchOptions);trythis.delegate.requestStarted(this);var response=yield fetch(this.url.href,fetchOptions);return yield this.receive(response)catch(error)if(“AbortError”!==error.name)throw this.delegate.requestErrored(this,error),errorfinallythis.delegate.requestFinished(this))receive(response)return __async$4(this,null,function*()var fetchResponse=new FetchResponse(response);return dispatch(“turbo:before-fetch-response”,cancelable:!0,detail:fetchResponse:fetchResponse,target:this.target).defaultPrevented?this.delegate.requestPreventedHandlingResponse(this,fetchResponse):fetchResponse.succeeded?this.delegate.requestSucceededWithResponse(this,fetchResponse):this.delegate.requestFailedWithResponse(this,fetchResponse),fetchResponse)get fetchOptions()var _a;returnget defaultHeaders()returnAccept:”text/html, application/xhtml+xml”get isIdempotent()return this.method==FetchMethod.getget abortSignal()return this.abortController.signalallowRequestToBeIntercepted(fetchOptions)return __async$4(this,null,function*()var requestInterception=new Promise(resolve=>this.resolveRequestPromise=resolve);dispatch(“turbo:before-fetch-request”,cancelable:!0,detail:fetchOptions:fetchOptions,url:this.url,resume:this.resolveRequestPromise,target:this.target).defaultPrevented&&(yield requestInterception))}class AppearanceObserverconstructor(delegate,element)this.started=!1,this.intersect=lastEntry=>lastEntry=lastEntry.slice(-1)[0];null!=lastEntry&&lastEntry.isIntersecting&&this.delegate.elementAppearedInViewport(this.element),this.delegate=delegate,this.element=element,this.intersectionObserver=new IntersectionObserver(this.intersect)start()this.startedstop()this.started&&(this.started=!1,this.intersectionObserver.unobserve(this.element))class StreamMessageconstructor(html)this.templateElement=document.createElement(“template”),this.templateElement.innerHTML=htmlstatic wrap(message)return”string”==typeof message?new this(message):messageget fragment()const fragment=document.createDocumentFragment();for(const element of this.foreignElements)fragment.appendChild(document.importNode(element,!0));return fragmentget foreignElements()return this.templateChildren.reduce((streamElements,child)=>”turbo-stream”==child.tagName.toLowerCase()?[…streamElements,child]:streamElements,[])get templateChildren()return Array.from(this.templateElement.content.children)StreamMessage.contentType=”text/vnd.turbo-stream.html”,(dfxGdprChecker=FormSubmissionState=FormSubmissionState||)[dfxGdprChecker.initialized=0]=”initialized”,dfxGdprChecker[dfxGdprChecker.requesting=1]=”requesting”,dfxGdprChecker[dfxGdprChecker.waiting=2]=”waiting”,dfxGdprChecker[dfxGdprChecker.receiving=3]=”receiving”,dfxGdprChecker[dfxGdprChecker.stopping=4]=”stopping”,dfxGdprChecker[dfxGdprChecker.stopped=5]=”stopped”,(Turbo$1=FormEnctype=FormEnctype||).urlEncoded=”application/x-www-form-urlencoded”,Turbo$1.multipart=”multipart/form-data”,Turbo$1.plain=”text/plain”;class FormSubmission{constructor(delegate,formElement,submitter,mustRedirect=!1)this.state=FormSubmissionState.initialized,this.delegate=delegate,this.formElement=formElement,this.submitter=submitter,this.formData=function buildFormData(formElement,submitter)const formData=new FormData(formElement),name=null==submitter?void 0:submitter.getAttribute(“name”),value=null==submitter?void 0:submitter.getAttribute(“value”);name&&null!=value&&formData.get(name)!=value&&formData.append(name,value);return formData(formElement,submitter),this.location=expandURL(this.action),this.method==FetchMethod.get&&function mergeFormDataEntries(url,entries)(this.location,[…this.body.entries()]),this.fetchRequest=new FetchRequest(this,this.method,this.location,this.body,this.formElement),this.mustRedirect=mustRedirectstatic confirmMethod(message,element)return confirm(message)get method()get action()formElementActionget body()get enctype()void 0===_a?void 0:_a.getAttribute(“formenctype”))get isIdempotent()return this.fetchRequest.isIdempotentget stringFormData()return[…this.formData].reduce((entries,[name,value])=>entries.concat(“string”==typeof value?[[name,value]]:[]),[])get confirmationMessage()return this.formElement.getAttribute(“data-turbo-confirm”)get needsConfirmation()return null!==this.confirmationMessagestart()return __async$4(this,null,function*()varinitialized,requesting=FormSubmissionState;if(this.needsConfirmation&&!FormSubmission.confirmMethod(this.confirmationMessage,this.formElement))return;if(this.state==initialized)return this.state=requesting,this.fetchRequest.perform())stop()varstopping,stopped=FormSubmissionState;if(this.state!=stopping&&this.state!=stopped)return this.state=stopping,this.fetchRequest.cancel(),!0prepareHeadersForRequest(headers,token)requestStarted(request)var _a;this.state=FormSubmissionState.waiting,null!==(_a=this.submitter)&&void 0!==_a&&_a.setAttribute(“disabled”,””),dispatch(“turbo:submit-start”,target:this.formElement,detail:formSubmission:this),this.delegate.formSubmissionStarted(this)requestPreventedHandlingResponse(request,response)this.result=success:response.succeeded,fetchResponse:responserequestSucceededWithResponse(error,response)response.clientErrorrequestFailedWithResponse(request,response)this.result=success:!1,fetchResponse:response,this.delegate.formSubmissionFailedWithResponse(this,response)requestErrored(request,error)this.result=success:!1,error:error,this.delegate.formSubmissionErrored(this,error)requestFinished(request)var _a;this.state=FormSubmissionState.stopped,null!==(_a=this.submitter)&&void 0!==_a&&_a.removeAttribute(“disabled”),dispatch(“turbo:submit-end”,target:this.formElement,detail:Object.assign(formSubmission:this,this.result)),this.delegate.formSubmissionFinished(this)requestMustRedirect(request)return!request.isIdempotent&&this.mustRedirect}function getMetaContent(element)element=document.querySelector(`meta[name=”$element”]`);return element&&element.contentclass Snapshotconstructor(element)this.element=elementget children()return[…this.element.children]hasAnchor(anchor)return null!=this.getElementForAnchor(anchor)getElementForAnchor(anchor)return anchor?this.element.querySelector(`[id=’$anchor’], a[name=”$anchor”]`):nullget isConnected()return this.element.isConnectedget firstAutofocusableElement()return this.element.querySelector(“[autofocus]”)get permanentElements()return[…this.element.querySelectorAll(“[id][data-turbo-permanent]”)]getPermanentElementById(id)return this.element.querySelector(`#$id[data-turbo-permanent]`)getPermanentElementMapForSnapshot(snapshot)const permanentElementMap=;for(const currentPermanentElement of this.permanentElements)varid=currentPermanentElement,newPermanentElement=snapshot.getPermanentElementById(id);newPermanentElement&&(permanentElementMap[id]=[currentPermanentElement,newPermanentElement])return permanentElementMapclass FormInterceptorconstructor(delegate,element)this.submitBubbled=event=>const form=event.target;if(!event.defaultPrevented&&form instanceof HTMLFormElement&&form.closest(“turbo-frame, html”)==this.element),this.delegate=delegate,this.element=elementstart()this.element.addEventListener(“submit”,this.submitBubbled)stop()this.element.removeEventListener(“submit”,this.submitBubbled)class Viewconstructor(delegate,element)this.resolveRenderPromise=value=>,this.resolveInterceptionPromise=value=>,this.delegate=delegate,this.element=elementscrollToAnchor(element)element=this.snapshot.getElementForAnchor(element);element?(this.scrollToElement(element),this.focusElement(element)):this.scrollToPosition(x:0,y:0)scrollToAnchorFromLocation(location2)this.scrollToAnchor(getAnchor(location2))scrollToElement(element)element.scrollIntoView()focusElement(element)element instanceof HTMLElement&&(element.hasAttribute(“tabindex”)?element.focus():(element.setAttribute(“tabindex”,”-1″),element.focus(),element.removeAttribute(“tabindex”)))scrollToPosition(x,y)this.scrollRoot.scrollTo(x,y)scrollToTop()this.scrollToPosition(x:0,y:0)get scrollRoot()return windowrender(renderer)return __async$4(this,null,function*()varisPreview,shouldRender,newSnapshot:snapshot=renderer;if(shouldRender)tryfinallydelete this.renderer,this.resolveRenderPromise(void 0),delete this.renderPromiseelse this.invalidate())invalidate()this.delegate.viewInvalidated()prepareToRenderSnapshot(renderer)this.markAsPreview(renderer.isPreview),renderer.prepareToRender()markAsPreview(isPreview)isPreview?this.element.setAttribute(“data-turbo-preview”,””):this.element.removeAttribute(“data-turbo-preview”)renderSnapshot(renderer)return __async$4(this,null,function*()yield renderer.render())finishRenderingSnapshot(renderer)renderer.finishRendering()class FrameView extends Viewinvalidate()this.element.innerHTML=””get snapshot()return new Snapshot(this.element)class LinkInterceptorconstructor(delegate,element)this.clickBubbled=event=>this.respondsToEventTarget(event.target)?this.clickEvent=event:delete this.clickEvent,this.linkClicked=event=>this.clickEvent&&this.respondsToEventTarget(event.target)&&event.target instanceof Element&&this.delegate.shouldInterceptLinkClick(event.target,event.detail.url)&&(this.clickEvent.preventDefault(),event.preventDefault(),this.delegate.linkClickIntercepted(event.target,event.detail.url)),delete this.clickEvent,this.willVisit=()=>delete this.clickEvent,this.delegate=delegate,this.element=elementstart()this.element.addEventListener(“click”,this.clickBubbled),document.addEventListener(“turbo:click”,this.linkClicked),document.addEventListener(“turbo:before-visit”,this.willVisit)stop()this.element.removeEventListener(“click”,this.clickBubbled),document.removeEventListener(“turbo:click”,this.linkClicked),document.removeEventListener(“turbo:before-visit”,this.willVisit)respondsToEventTarget(target)const element=target instanceof Element?target:target instanceof Node?target.parentElement:null;return element&&element.closest(“turbo-frame, html”)==this.elementclass Bardoconstructor(permanentElementMap)this.permanentElementMap=permanentElementMapstatic preservingPermanentElements(permanentElementMap,callback)const bardo=new this(permanentElementMap);bardo.enter(),callback(),bardo.leave()enter()for(const id in this.permanentElementMap)var[,newPermanentElement]=this.permanentElementMap[id];this.replaceNewPermanentElementWithPlaceholder(newPermanentElement)leave()for(const id in this.permanentElementMap)var[currentPermanentElement]=this.permanentElementMap[id];this.replaceCurrentPermanentElementWithClone(currentPermanentElement),this.replacePlaceholderWithPermanentElement(currentPermanentElement)replaceNewPermanentElementWithPlaceholder(permanentElement)var placeholder=function createPlaceholderForPermanentElement(permanentElement)const element=document.createElement(“meta”);return element.setAttribute(“name”,”turbo-permanent-placeholder”),element.setAttribute(“content”,permanentElement.id),element(permanentElement);permanentElement.replaceWith(placeholder)replaceCurrentPermanentElementWithClone(permanentElement)var clone=permanentElement.cloneNode(!0);permanentElement.replaceWith(clone)replacePlaceholderWithPermanentElement(permanentElement)const placeholder=this.getPlaceholderById(permanentElement.id);null!==placeholder&&void 0!==placeholder&&placeholder.replaceWith(permanentElement)getPlaceholderById(id)return this.placeholders.find(element=>element.content==id)get placeholders()return[…document.querySelectorAll(“meta[name=turbo-permanent-placeholder][content]”)]class Renderer{constructor(currentSnapshot,newSnapshot,isPreview,willRender=!0)this.currentSnapshot=currentSnapshot,this.newSnapshot=newSnapshot,this.isPreview=isPreview,this.willRender=willRender,this.promise=new Promise((resolve,reject)=>this.resolvingFunctions=resolve:resolve,reject:reject)get shouldRender()return!0prepareToRender()finishRendering()this.resolvingFunctions&&(this.resolvingFunctions.resolve(),delete this.resolvingFunctions)createScriptElement(element)if(“false”==element.getAttribute(“data-turbo-eval”))return element;const createdScriptElement=document.createElement(“script”);return this.cspNonce&&(createdScriptElement.nonce=this.cspNonce),createdScriptElement.textContent=element.textContent,createdScriptElement.async=!1,function copyElementAttributes(destinationElement,sourceElement)for(varname,valueof[…sourceElement.attributes])destinationElement.setAttribute(name,value)(createdScriptElement,element),createdScriptElementpreservingPermanentElements(callback)Bardo.preservingPermanentElements(this.permanentElementMap,callback)focusFirstAutofocusableElement()get connectedSnapshot()return this.newSnapshot.isConnected?this.newSnapshot:this.currentSnapshotget currentElement()return this.currentSnapshot.elementget newElement()return this.newSnapshot.elementget permanentElementMap()return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)get cspNonce()}class FrameRenderer extends Rendererget shouldRender()return!0render()return __async$4(this,null,function*()yield nextAnimationFrame(),this.preservingPermanentElements(()=>this.loadFrameElement()),this.scrollFrameIntoView(),yield nextAnimationFrame(),this.focusFirstAutofocusableElement(),yield nextAnimationFrame(),this.activateScriptElements())loadFrameElement()var _a;const destinationRange=document.createRange();destinationRange.selectNodeContents(this.currentElement),destinationRange.deleteContents();var frameElement=this.newElement;const sourceRange=null===(_a=frameElement.ownerDocument)scrollFrameIntoView()if(this.currentElement.autoscrollactivateScriptElements()for(const inertScriptElement of this.newScriptElements)var activatedScriptElement=this.createScriptElement(inertScriptElement);inertScriptElement.replaceWith(activatedScriptElement)get newScriptElements()return this.currentElement.querySelectorAll(“script”)class ProgressBarconstructor()this.hiding=!1,this.value=0,this.visible=!1,this.trickle=()=>this.setValue(this.value+Math.random()/100),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement(),this.installStylesheetElement(),this.setValue(0)static get defaultCSS()return unindent`
.turbo-progress-bar
position: fixed;
display: block;
top: 0;
left: 0;
height: 3px;
background: #0076ff;
z-index: 9999;
transition:
width $ProgressBar.animationDurationms ease-out,
opacity $ProgressBar.animationDuration/2ms $ProgressBar.animationDuration/2ms ease-in;
transform: translate3d(0, 0, 0);

`show()hide()this.visible&&!this.hiding&&(this.hiding=!0,this.fadeProgressElement(()=>this.uninstallProgressElement(),this.stopTrickling(),this.visible=!1,this.hiding=!1))setValue(value)this.value=value,this.refresh()installStylesheetElement()document.head.insertBefore(this.stylesheetElement,document.head.firstChild)installProgressElement()this.progressElement.style.width=”0″,this.progressElement.style.opacity=”1″,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()fadeProgressElement(callback)this.progressElement.style.opacity=”0″,setTimeout(callback,1.5*ProgressBar.animationDuration)uninstallProgressElement()this.progressElement.parentNode&&document.documentElement.removeChild(this.progressElement)startTrickling()this.trickleIntervalstopTrickling()window.clearInterval(this.trickleInterval),delete this.trickleIntervalrefresh()requestAnimationFrame(()=>this.progressElement.style.width=`$10+90*this.value%`)createStylesheetElement()const element=document.createElement(“style”);return element.type=”text/css”,element.textContent=ProgressBar.defaultCSS,elementcreateProgressElement()const element=document.createElement(“div”);return element.className=”turbo-progress-bar”,elementProgressBar.animationDuration=300;class HeadSnapshot extends Snapshot{constructor(){super(…arguments),this.detailsByOuterHTML=this.children.filter(element=>!function elementIsNoscript(tagName)tagName=tagName.tagName.toLowerCase();return”noscript”==tagName(element)).map(element=>function elementWithoutNonce(element)element.hasAttribute(“nonce”)&&element.setAttribute(“nonce”,””);return element(element)).reduce((result,element)=>{varouterHTML=element,details=outerHTML in result?result[outerHTML]:type:function elementType(element)if(function elementIsScript(tagName)tagName=tagName.tagName.toLowerCase();return”script”==tagName(element))return”script”;if(function elementIsStylesheet(element)var tagName=element.tagName.toLowerCase();return”style”==tagName(element))return”stylesheet”(element),tracked:function elementIsTracked(element)return”reload”==element.getAttribute(“data-turbo-track”)(element),elements:[];return Object.assign(Object.assign(,result),[outerHTML]:Object.assign(Object.assign(,details),elements:[…details.elements,element]))},)}get trackedElementSignature()return Object.keys(this.detailsByOuterHTML).filter(outerHTML=>this.detailsByOuterHTML[outerHTML].tracked).join(“”)getScriptElementsNotInSnapshot(snapshot)return this.getElementsMatchingTypeNotInSnapshot(“script”,snapshot)getStylesheetElementsNotInSnapshot(snapshot)return this.getElementsMatchingTypeNotInSnapshot(“stylesheet”,snapshot)getElementsMatchingTypeNotInSnapshot(matchedType,snapshot)return Object.keys(this.detailsByOuterHTML).filter(outerHTML=>!(outerHTML in snapshot.detailsByOuterHTML)).map(outerHTML=>this.detailsByOuterHTML[outerHTML]).filter((type)=>type==matchedType).map((elements:[element])=>element)get provisionalElements()return Object.keys(this.detailsByOuterHTML).reduce((result,outerHTML)=>,[])getMetaValue(name)const element=this.findMetaElementByName(name);return element?element.getAttribute(“content”):nullfindMetaElementByName(name)return Object.keys(this.detailsByOuterHTML).reduce((result,element)=>varelements:[element]=this.detailsByOuterHTML[element];return function elementIsMetaElementWithName(element,name)var tagName=element.tagName.toLowerCase();return”meta”==tagName&&element.getAttribute(“name”)==name(element,name)?element:result,void 0)}class PageSnapshot extends Snapshotconstructor(element,headSnapshot)super(element),this.headSnapshot=headSnapshotstatic fromHTMLString(html=””)return this.fromDocument(parseHTMLDocument(html))static fromElement(element)return this.fromDocument(element.ownerDocument)static fromDocument(head,body)return new this(body,new HeadSnapshot(head))clone()return new PageSnapshot(this.element.cloneNode(!0),this.headSnapshot)get headElement()return this.headSnapshot.elementget rootLocation()var _a;return expandURL(null!==(_a=this.getSetting(“root”))&&void 0!==_a?_a:”/”)get cacheControlValue()return this.getSetting(“cache-control”)get isPreviewable()return”no-preview”!=this.cacheControlValueget isCacheable()return”no-cache”!=this.cacheControlValueget isVisitable()return”reload”!=this.getSetting(“visit-control”)getSetting(name)return this.headSnapshot.getMetaValue(`turbo-$name`)(dfxGdprChecker=TimingMetric=TimingMetric||).visitStart=”visitStart”,dfxGdprChecker.requestStart=”requestStart”,dfxGdprChecker.requestEnd=”requestEnd”,dfxGdprChecker.visitEnd=”visitEnd”,(Turbo$1=VisitState=VisitState||).initialized=”initialized”,Turbo$1.started=”started”,Turbo$1.canceled=”canceled”,Turbo$1.failed=”failed”;const defaultOptions=action:”advance”,historyChanged:!(Turbo$1.completed=”completed”),visitCachedSnapshot:()=>,willRender:!0;(dfxGdprChecker=SystemStatusCode=SystemStatusCode||)[dfxGdprChecker.networkFailure=0]=”networkFailure”,dfxGdprChecker[dfxGdprChecker.timeoutFailure=-1]=”timeoutFailure”,dfxGdprChecker[dfxGdprChecker.contentTypeMismatch=-2]=”contentTypeMismatch”;class Visitconstructor(snapshotHTML,response,visitCachedSnapshot,willRender=)get adapter()return this.delegate.adapterget view()return this.delegate.viewget history()return this.delegate.historyget restorationData()return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)get silent()return this.isSamePagestart()this.state==VisitState.initialized&&(this.recordTimingMetric(TimingMetric.visitStart),this.state=VisitState.started,this.adapter.visitStarted(this),this.delegate.visitStarted(this))cancel()this.state==VisitState.started&&(this.request&&this.request.cancel(),this.cancelRender(),this.state=VisitState.canceled)complete()this.state==VisitState.started&&(this.recordTimingMetric(TimingMetric.visitEnd),this.state=VisitState.completed,this.adapter.visitCompleted(this),this.delegate.visitCompleted(this),this.followRedirect())fail()this.state==VisitState.started&&(this.state=VisitState.failed,this.adapter.visitFailed(this))changeHistory()void 0===method?void 0:method.href)?”replace”:this.action,method=this.getHistoryMethodForAction(method),this.history.update(method,this.location,this.restorationIdentifier),this.historyChanged=!0)issueRequest()this.hasPreloadedResponse()?this.simulateRequest():this.shouldIssueRequest()&&!this.request&&(this.request=new FetchRequest(this,FetchMethod.get,this.location),this.request.perform())simulateRequest()this.response&&(this.startRequest(),this.recordResponse(),this.finishRequest())startRequest()this.recordTimingMetric(TimingMetric.requestStart),this.adapter.visitRequestStarted(this)recordResponse(statusCode=this.response)(this.response=statusCode)&&(statusCode:statusCode=statusCode,isSuccessful(statusCode)?this.adapter.visitRequestCompleted(this):this.adapter.visitRequestFailedWithStatusCode(this,statusCode))finishRequest()this.recordTimingMetric(TimingMetric.requestEnd),this.adapter.visitRequestFinished(this)loadResponse()if(this.response)conststatusCode,responseHTML=this.response;this.render(()=>__async$4(this,null,function*()this.cacheSnapshot(),this.view.renderPromise&&(yield this.view.renderPromise),isSuccessful(statusCode)&&null!=responseHTML?(yield this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML),!1,this.willRender),this.adapter.visitRendered(this),this.complete()):(yield this.view.renderError(PageSnapshot.fromHTMLString(responseHTML)),this.adapter.visitRendered(this),this.fail())))getCachedSnapshot()snapshot.hasAnchor(getAnchor(this.location)))&&(“restore”==this.actiongetPreloadedSnapshot()if(this.snapshotHTML)return PageSnapshot.fromHTMLString(this.snapshotHTML)hasCachedSnapshot()return null!=this.getCachedSnapshot()loadCachedSnapshot()const snapshot=this.getCachedSnapshot();if(snapshot)const isPreview=this.shouldIssueRequest();this.render(()=>__async$4(this,null,function*()this.cacheSnapshot(),this.isSamePage?this.adapter.visitRendered(this):(this.view.renderPromise&&(yield this.view.renderPromise),yield this.view.renderPage(snapshot,isPreview,this.willRender),this.adapter.visitRendered(this),isPreview))followRedirect()var _a;this.redirectedToLocation&&!this.followedRedirect&&null!==(_a=this.response)&&void 0!==_a&&_a.redirected&&(this.adapter.visitProposedToLocation(this.redirectedToLocation,action:”replace”,response:this.response),this.followedRedirect=!0)goToSamePageAnchor()this.isSamePage&&this.render(()=>__async$4(this,null,function*()this.cacheSnapshot(),this.adapter.visitRendered(this)))requestStarted()this.startRequest()requestPreventedHandlingResponse(request,response)requestSucceededWithResponse(request,response)return __async$4(this,null,function*()var responseHTML=yield response.responseHTML,redirected,statusCode=response;null==responseHTML?this.recordResponse(statusCode:SystemStatusCode.contentTypeMismatch,redirected:redirected):(this.redirectedToLocation=response.redirected?response.location:void 0,this.recordResponse(statusCode:statusCode,responseHTML:responseHTML,redirected:redirected)))requestFailedWithResponse(request,response)return __async$4(this,null,function*()var responseHTML=yield response.responseHTML,redirected,statusCode=response;null==responseHTML?this.recordResponse(statusCode:SystemStatusCode.contentTypeMismatch,redirected:redirected):this.recordResponse(statusCode:statusCode,responseHTML:responseHTML,redirected:redirected))requestErrored(request,error)this.recordResponse(statusCode:SystemStatusCode.networkFailure,redirected:!1)requestFinished()this.finishRequest()performScroll()scrollToRestoredPosition()varscrollPosition=this.restorationData;if(scrollPosition)return this.view.scrollToPosition(scrollPosition),!0scrollToAnchor()var anchor=getAnchor(this.location);if(null!=anchor)return this.view.scrollToAnchor(anchor),!0recordTimingMetric(metric)this.timingMetrics[metric]=(new Date).getTime()getTimingMetrics()return Object.assign(,this.timingMetrics)getHistoryMethodForAction(action)switch(action)case”replace”:return history.replaceState;case”advance”:case”restore”:return history.pushStatehasPreloadedResponse()return”object”==typeof this.responseshouldIssueRequest()return!this.isSamePage&&(“restore”==this.action?!this.hasCachedSnapshot():this.willRender)cacheSnapshot()render(callback)return __async$4(this,null,function*()this.cancelRender(),yield new Promise(resolve=>this.frame=requestAnimationFrame(()=>resolve())),yield callback(),delete this.frame,this.performScroll())cancelRender()this.frame&&(cancelAnimationFrame(this.frame),delete this.frame)function isSuccessful(statusCode)return 200<=statusCode&&statusCodethis.progressBar.show(),this.session=session2visitProposedToLocation(location2,options)this.navigator.startVisit(location2,uuid(),options)visitStarted(visit2)visit2.loadCachedSnapshot(),visit2.issueRequest(),visit2.changeHistory(),visit2.goToSamePageAnchor()visitRequestStarted(visit2)visitRequestCompleted(visit2)visit2.loadResponse()visitRequestFailedWithStatusCode(visit2,statusCode)switch(statusCode)case SystemStatusCode.networkFailure:case SystemStatusCode.timeoutFailure:case SystemStatusCode.contentTypeMismatch:return this.reload();default:return visit2.loadResponse()visitRequestFinished(visit2)this.progressBar.setValue(1),this.hideVisitProgressBar()visitCompleted(visit2)pageInvalidated()this.reload()visitFailed(visit2)visitRendered(visit2)formSubmissionStarted(formSubmission)this.progressBar.setValue(0),this.showFormProgressBarAfterDelay()formSubmissionFinished(formSubmission)this.progressBar.setValue(1),this.hideFormProgressBar()showVisitProgressBarAfterDelay()this.visitProgressBarTimeout=window.setTimeout(this.showProgressBar,this.session.progressBarDelay)hideVisitProgressBar()this.progressBar.hide(),null!=this.visitProgressBarTimeout&&(window.clearTimeout(this.visitProgressBarTimeout),delete this.visitProgressBarTimeout)showFormProgressBarAfterDelay()null==this.formProgressBarTimeout&&(this.formProgressBarTimeout=window.setTimeout(this.showProgressBar,this.session.progressBarDelay))hideFormProgressBar()this.progressBar.hide(),null!=this.formProgressBarTimeout&&(window.clearTimeout(this.formProgressBarTimeout),delete this.formProgressBarTimeout)reload()window.location.reload()get navigator()return this.session.navigatorclass CacheObserverconstructor()this.started=!1start()this.startedstop()this.started&&(this.started=!1,removeEventListener(“turbo:before-cache”,this.removeStaleElements,!1))removeStaleElements()for(const element of[…document.querySelectorAll(‘[data-turbo-cache=”false”]’)])element.remove()class FormSubmitObserverconstructor(delegate)this.started=!1,this.submitCaptured=()=>removeEventListener(“submit”,this.submitBubbled,!1),addEventListener(“submit”,this.submitBubbled,!1),this.submitBubbled=event=>if(!event.defaultPrevented),this.delegate=delegatestart()(addEventListener(“submit”,this.submitCaptured,!0),this.started=!0)stop()this.started&&(removeEventListener(“submit”,this.submitCaptured,!0),this.started=!1)class FrameRedirectorconstructor(element)this.element=element,this.linkInterceptor=new LinkInterceptor(this,element),this.formInterceptor=new FormInterceptor(this,element)start()this.linkInterceptor.start(),this.formInterceptor.start()stop()this.linkInterceptor.stop(),this.formInterceptor.stop()shouldInterceptLinkClick(element,url)return this.shouldRedirect(element)linkClickIntercepted(element,url)const frame=this.findFrameElement(element);frame&&frame.delegate.linkClickIntercepted(element,url)shouldInterceptFormSubmission(element,submitter)return this.shouldSubmit(element,submitter)formSubmissionIntercepted(element,submitter)const frame=this.findFrameElement(element,submitter);frame&&(frame.removeAttribute(“reloadable”),frame.delegate.formSubmissionIntercepted(element,submitter))shouldSubmit(form,submitter)var action=getAction(form,submitter),rootLocation=this.element.ownerDocument.querySelector(‘meta[name=”turbo-root”]’),rootLocation=expandURL(null!==(rootLocation=null==rootLocation?void 0:rootLocation.content)&&void 0!==rootLocation?rootLocation:”/”);return this.shouldRedirect(form,submitter)&&locationIsVisitable(action,rootLocation)shouldRedirect(element,frame)frame=this.findFrameElement(element,frame);return!!frame&&frame!=element.closest(“turbo-frame”)findFrameElement(frame,submitter)frame=(null==submitter?void 0:submitter.getAttribute(“data-turbo-frame”))class Historyconstructor(delegate)this.restorationIdentifier=uuid(),this.restorationData=,this.started=!1,this.pageLoaded=!1,this.onPopState=restorationIdentifier=>,this.onPageLoad=event=>__async$4(this,null,function*()yield function nextMicrotask()return Promise.resolve()(),this.pageLoaded=!0),this.delegate=delegatestart()(addEventListener(“popstate”,this.onPopState,!1),addEventListener(“load”,this.onPageLoad,!1),this.started=!0,this.replace(new URL(window.location.href)))stop()this.started&&(removeEventListener(“popstate”,this.onPopState,!1),removeEventListener(“load”,this.onPageLoad,!1),this.started=!1)push(location2,restorationIdentifier)this.update(history.pushState,location2,restorationIdentifier)replace(location2,restorationIdentifier)this.update(history.replaceState,location2,restorationIdentifier)update(method,location2,restorationIdentifier=uuid())method.call(history,turbo:restorationIdentifier:restorationIdentifier,””,location2.href),this.location=location2,this.restorationIdentifier=restorationIdentifiergetRestorationDataForIdentifier(restorationIdentifier)return this.restorationData[restorationIdentifier]updateRestorationData(additionalData)varrestorationIdentifier=this,restorationData=this.restorationData[restorationIdentifier];this.restorationData[restorationIdentifier]=Object.assign(Object.assign(,restorationData),additionalData)assumeControlOfScrollRestoration()var _a;this.previousScrollRestorationrelinquishControlOfScrollRestoration()this.previousScrollRestoration&&(history.scrollRestoration=this.previousScrollRestoration,delete this.previousScrollRestoration)shouldHandlePopState()return this.pageIsLoaded()pageIsLoaded()”complete”==document.readyStateclass LinkClickObserverconstructor(delegate)this.started=!1,this.clickCaptured=()=>removeEventListener(“click”,this.clickBubbled,!1),addEventListener(“click”,this.clickBubbled,!1),this.clickBubbled=event=>,this.delegate=delegatestart()stop()this.started&&(removeEventListener(“click”,this.clickCaptured,!0),this.started=!1)clickEventIsSignificant(event)findLinkFromClickTarget(target)if(target instanceof Element)return target.closest(“a[href]:not([target^=_]):not([download])”)getLocationForLink(link)””)function isAction(action)class Navigator{constructor(delegate)this.delegate=delegateproposeVisit(location2,options=)this.delegate.allowsVisitingLocationWithAction(location2,options.action)&&(locationIsVisitable(location2,this.view.snapshot.rootLocation)?this.delegate.visitProposedToLocation(location2,options):window.location.href=location2.toString())startVisit(locatable,restorationIdentifier,options=)this.stop(),this.currentVisit=new Visit(this,expandURL(locatable),restorationIdentifier,Object.assign(referrer:this.location,options)),this.currentVisit.start()submitForm(form,submitter)this.stop(),this.formSubmission=new FormSubmission(this,form,submitter,!0),this.formSubmission.start()stop()this.formSubmission&&(this.formSubmission.stop(),delete this.formSubmission),this.currentVisit&&(this.currentVisit.cancel(),delete this.currentVisit)get adapter()return this.delegate.adapterget view()return this.delegate.viewget history()return this.delegate.historyformSubmissionStarted(formSubmission)”function”==typeof this.adapter.formSubmissionStarted&&this.adapter.formSubmissionStarted(formSubmission)formSubmissionSucceededWithResponse(formSubmission,fetchResponse)return __async$4(this,null,function*()(responseHTML=yield fetchResponse.responseHTML)&&(formSubmission.method!=FetchMethod.get&&this.view.clearSnapshotCache(),statusCode:statusCode,redirected:redirected=fetchResponse,action=this.getActionForFormSubmission(formSubmission),this.proposeVisit(fetchResponse.location,action:action,response:statusCode:statusCode,responseHTML:responseHTML,redirected:redirected)))formSubmissionFailedWithResponse(formSubmission,fetchResponse)return __async$4(this,null,function*()var snapshot=yield fetchResponse.responseHTML;snapshot&&(snapshot=PageSnapshot.fromHTMLString(snapshot),fetchResponse.serverError?yield this.view.renderError(snapshot):yield this.view.renderPage(snapshot),this.view.scrollToTop(),this.view.clearSnapshotCache()))formSubmissionErrored(formSubmission,error)console.error(error)formSubmissionFinished(formSubmission)”function”==typeof this.adapter.formSubmissionFinished&&this.adapter.formSubmissionFinished(formSubmission)visitStarted(visit2)this.delegate.visitStarted(visit2)visitCompleted(visit2)this.delegate.visitCompleted(visit2)locationWithActionIsSamePage(location2,action)visitScrolledToSamePageLocation(oldURL,newURL)this.delegate.visitScrolledToSamePageLocation(oldURL,newURL)get location()return this.history.locationget restorationIdentifier()return this.history.restorationIdentifiergetActionForFormSubmission(submitter)varformElement:action,submitter=submitter,action=getAttribute(“data-turbo-action”,submitter,action);return isAction(action)?action:”advance”}(Turbo$1=PageStage=PageStage||)[Turbo$1.initial=0]=”initial”,Turbo$1[Turbo$1.loading=1]=”loading”,Turbo$1[Turbo$1.interactive=2]=”interactive”,Turbo$1[Turbo$1.complete=3]=”complete”;class PageObserverconstructor(delegate)this.stage=PageStage.initial,this.started=!1,this.interpretReadyState=()=>varreadyState=this;”interactive”==readyState?this.pageIsInteractive():”complete”==readyState&&this.pageIsComplete(),this.pageWillUnload=()=>this.delegate.pageWillUnload(),this.delegate=delegatestart()this.startedstop()this.started&&(document.removeEventListener(“readystatechange”,this.interpretReadyState,!1),removeEventListener(“pagehide”,this.pageWillUnload,!1),this.started=!1)pageIsInteractive()this.stage==PageStage.loading&&(this.stage=PageStage.interactive,this.delegate.pageBecameInteractive())pageIsComplete()this.pageIsInteractive(),this.stage==PageStage.interactive&&(this.stage=PageStage.complete,this.delegate.pageLoaded())get readyState()return document.readyStateclass ScrollObserverconstructor(delegate)this.started=!1,this.onScroll=()=>this.updatePosition(x:window.pageXOffset,y:window.pageYOffset),this.delegate=delegatestart()stop()this.started&&(removeEventListener(“scroll”,this.onScroll,!1),this.started=!1)updatePosition(position)this.delegate.scrollPositionChanged(position)class StreamObserverconstructor(delegate)this.sources=new Set,this.started=!1,this.inspectFetchResponse=event=>var response=function fetchResponseFromEvent(fetchResponse)fetchResponse=null===(fetchResponse=fetchResponse.detail)(event);response&&function fetchResponseIsStream(_a)const contentType=null!==(_a=_a.contentType)&&void 0!==_a?_a:””;return contentType.startsWith(StreamMessage.contentType)(response)&&(event.preventDefault(),this.receiveMessageResponse(response)),this.receiveMessageEvent=event=>this.started&&”string”==typeof event.data&&this.receiveMessageHTML(event.data),this.delegate=delegatestart()this.startedstop()this.started&&(this.started=!1,removeEventListener(“turbo:before-fetch-response”,this.inspectFetchResponse,!1))connectStreamSource(source)(this.sources.add(source),source.addEventListener(“message”,this.receiveMessageEvent,!1))disconnectStreamSource(source)this.streamSourceIsConnected(source)&&(this.sources.delete(source),source.removeEventListener(“message”,this.receiveMessageEvent,!1))streamSourceIsConnected(source)return this.sources.has(source)receiveMessageResponse(response)return __async$4(this,null,function*()var html=yield response.responseHTML;html&&this.receiveMessageHTML(html))receiveMessageHTML(html)this.delegate.receivedMessageFromStream(new StreamMessage(html))class ErrorRenderer extends Rendererrender()return __async$4(this,null,function*()this.replaceHeadAndBody(),this.activateScriptElements())replaceHeadAndBody()constdocumentElement,head,body=document;documentElement.replaceChild(this.newHead,head),documentElement.replaceChild(this.newElement,body)activateScriptElements()for(const replaceableElement of this.scriptElements)const parentNode=replaceableElement.parentNode;var element;parentNode&&(element=this.createScriptElement(replaceableElement),parentNode.replaceChild(element,replaceableElement))get newHead()return this.newSnapshot.headSnapshot.elementget scriptElements()return[…document.documentElement.querySelectorAll(“script”)]class PageRenderer extends Rendererget shouldRender()return this.newSnapshot.isVisitable&&this.trackedElementsAreIdenticalprepareToRender()this.mergeHead()render()return __async$4(this,null,function*()this.willRender&&this.replaceBody())finishRendering()this.focusFirstAutofocusableElement()get currentHeadSnapshot()return this.currentSnapshot.headSnapshotget newHeadSnapshot()return this.newSnapshot.headSnapshotget newElement()return this.newSnapshot.elementmergeHead()this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()replaceBody()this.preservingPermanentElements(()=>this.activateNewBody(),this.assignNewBody())get trackedElementsAreIdentical()return this.currentHeadSnapshot.trackedElementSignature==this.newHeadSnapshot.trackedElementSignaturecopyNewHeadStylesheetElements()for(const element of this.newHeadStylesheetElements)document.head.appendChild(element)copyNewHeadScriptElements()for(const element of this.newHeadScriptElements)document.head.appendChild(this.createScriptElement(element))removeCurrentHeadProvisionalElements()for(const element of this.currentHeadProvisionalElements)document.head.removeChild(element)copyNewHeadProvisionalElements()for(const element of this.newHeadProvisionalElements)document.head.appendChild(element)activateNewBody()document.adoptNode(this.newElement),this.activateNewBodyScriptElements()activateNewBodyScriptElements()for(const inertScriptElement of this.newBodyScriptElements)var activatedScriptElement=this.createScriptElement(inertScriptElement);inertScriptElement.replaceWith(activatedScriptElement)assignNewBody()document.body&&this.newElement instanceof HTMLBodyElement?document.body.replaceWith(this.newElement):document.documentElement.appendChild(this.newElement)get newHeadStylesheetElements()return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)get newHeadScriptElements()return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)get currentHeadProvisionalElements()return this.currentHeadSnapshot.provisionalElementsget newHeadProvisionalElements()return this.newHeadSnapshot.provisionalElementsget newBodyScriptElements()return this.newElement.querySelectorAll(“script”)class SnapshotCacheconstructor(size)this.keys=[],this.snapshots=,this.size=sizehas(location2)return toCacheKey(location2)in this.snapshotsget(location2)if(this.has(location2))var snapshot=this.read(location2);return this.touch(location2),snapshotput(location2,snapshot)return this.write(location2,snapshot),this.touch(location2),snapshotclear()this.snapshots=read(location2)return this.snapshots[toCacheKey(location2)]write(location2,snapshot)this.snapshots[toCacheKey(location2)]=snapshottouch(index)var key=toCacheKey(index),index=this.keys.indexOf(key);-1setTimeout(()=>resolve(),0))();var cachedSnapshot=snapshot.clone();return this.snapshotCache.put(location2,cachedSnapshot),cachedSnapshot)getCachedSnapshotForLocation(location2)return this.snapshotCache.get(location2)get snapshot()return PageSnapshot.fromElement(this.element)get shouldCacheSnapshot()return this.snapshot.isCacheable}function extendURLWithDeprecatedProperties(url)Object.defineProperties(url,deprecatedLocationPropertyDescriptors)const deprecatedLocationPropertyDescriptors=absoluteURL:get()return this.toString(),session=new class Sessionconstructor()this.navigator=new Navigator(this),this.history=new History(this),this.view=new PageView(this,document.documentElement),this.adapter=new BrowserAdapter(this),this.pageObserver=new PageObserver(this),this.cacheObserver=new CacheObserver,this.linkClickObserver=new LinkClickObserver(this),this.formSubmitObserver=new FormSubmitObserver(this),this.scrollObserver=new ScrollObserver(this),this.streamObserver=new StreamObserver(this),this.frameRedirector=new FrameRedirector(document.documentElement),this.drive=!0,this.enabled=!0,this.progressBarDelay=500,this.started=!1start()this.starteddisable()this.enabled=!1stop()this.started&&(this.pageObserver.stop(),this.cacheObserver.stop(),this.linkClickObserver.stop(),this.formSubmitObserver.stop(),this.scrollObserver.stop(),this.streamObserver.stop(),this.frameRedirector.stop(),this.history.stop(),this.started=!1)registerAdapter(adapter)this.adapter=adaptervisit(location2,options=)this.navigator.proposeVisit(expandURL(location2),options)connectStreamSource(source)this.streamObserver.connectStreamSource(source)disconnectStreamSource(source)this.streamObserver.disconnectStreamSource(source)renderStreamMessage(message)document.documentElement.appendChild(StreamMessage.wrap(message).fragment)clearCache()this.view.clearSnapshotCache()setProgressBarDelay(delay)this.progressBarDelay=delayget location()return this.history.locationget restorationIdentifier()return this.history.restorationIdentifierhistoryPoppedToLocationWithRestorationIdentifier(location2,restorationIdentifier)this.enabled?this.navigator.startVisit(location2,restorationIdentifier,action:”restore”,historyChanged:!0):this.adapter.pageInvalidated()scrollPositionChanged(position)this.history.updateRestorationData(scrollPosition:position)willFollowLinkToLocation(link,location2)return this.elementDriveEnabled(link)&&locationIsVisitable(location2,this.snapshot.rootLocation)&&this.applicationAllowsFollowingLinkToLocation(link,location2)followedLinkToLocation(link,location2)this.visit(location2.href,action:action)convertLinkWithMethodClickToFormSubmission(frame)var linkMethod=frame.getAttribute(“data-turbo-method”);if(linkMethod)”undefined”,form.hidden=!0,frame.hasAttribute(“data-turbo-confirm”)&&form.setAttribute(“data-turbo-confirm”,frame.getAttribute(“data-turbo-confirm”));frame=this.getTargetFrameForLink(frame);return frame?(form.setAttribute(“data-turbo-frame”,frame),form.addEventListener(“turbo:submit-start”,()=>form.remove())):form.addEventListener(“submit”,()=>form.remove()),document.body.appendChild(form),dispatch(“submit”,cancelable:!0,target:form)return!1allowsVisitingLocationWithAction(location2,action)this.applicationAllowsVisitingLocation(location2)visitProposedToLocation(location2,options)extendURLWithDeprecatedProperties(location2),this.adapter.visitProposedToLocation(location2,options)visitStarted(visit2)this.notifyApplicationAfterVisitingLocation(visit2.location,visit2.action)visitCompleted(visit2)this.notifyApplicationAfterPageLoad(visit2.getTimingMetrics())locationWithActionIsSamePage(location2,action)return this.navigator.locationWithActionIsSamePage(location2,action)visitScrolledToSamePageLocation(oldURL,newURL)this.notifyApplicationAfterVisitingSamePageLocation(oldURL,newURL)willSubmitForm(form,submitter)this.elementDriveEnabled(submitter))&&locationIsVisitable(expandURL(action),this.snapshot.rootLocation)formSubmitted(form,submitter)this.navigator.submitForm(form,submitter)pageBecameInteractive()this.view.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()pageLoaded()this.history.assumeControlOfScrollRestoration()pageWillUnload()this.history.relinquishControlOfScrollRestoration()receivedMessageFromStream(message)this.renderStreamMessage(message)viewWillCacheSnapshot()this.notifyApplicationBeforeCachingSnapshot()allowsImmediateRender(element,resume)return!this.notifyApplicationBeforeRender(element,resume).defaultPreventedviewRenderedSnapshot(snapshot,isPreview)this.view.lastRenderedLocation=this.history.location,this.notifyApplicationAfterRender()viewInvalidated()this.adapter.pageInvalidated()frameLoaded(frame)this.notifyApplicationAfterFrameLoad(frame)frameRendered(fetchResponse,frame)this.notifyApplicationAfterFrameRender(fetchResponse,frame)applicationAllowsFollowingLinkToLocation(link,location2)return!this.notifyApplicationAfterClickingLinkToLocation(link,location2).defaultPreventedapplicationAllowsVisitingLocation(location2)return!this.notifyApplicationBeforeVisitingLocation(location2).defaultPreventednotifyApplicationAfterClickingLinkToLocation(link,location2)return dispatch(“turbo:click”,target:link,detail:url:location2.href,cancelable:!0)notifyApplicationBeforeVisitingLocation(location2)return dispatch(“turbo:before-visit”,detail:url:location2.href,cancelable:!0)notifyApplicationAfterVisitingLocation(location2,action)return markAsBusy(document.documentElement),dispatch(“turbo:visit”,detail:url:location2.href,action:action)notifyApplicationBeforeCachingSnapshot()return dispatch(“turbo:before-cache”)notifyApplicationBeforeRender(newBody,resume)return dispatch(“turbo:before-render”,detail:newBody:newBody,resume:resume,cancelable:!0)notifyApplicationAfterRender()return dispatch(“turbo:render”)notifyApplicationAfterPageLoad(timing=)return clearBusyState(document.documentElement),dispatch(“turbo:load”,detail:url:this.location.href,timing:timing)notifyApplicationAfterVisitingSamePageLocation(oldURL,newURL)dispatchEvent(new HashChangeEvent(“hashchange”,oldURL:oldURL.toString(),newURL:newURL.toString()))notifyApplicationAfterFrameLoad(frame)return dispatch(“turbo:frame-load”,target:frame)notifyApplicationAfterFrameRender(fetchResponse,frame)return dispatch(“turbo:frame-render”,detail:fetchResponse:fetchResponse,target:frame,cancelable:!0)elementDriveEnabled(element)const container=null==element?void 0:element.closest(“[data-turbo]”);return this.drive?!containergetActionForLink(action)action=action.getAttribute(“data-turbo-action”);return isAction(action)?action:”advance”getTargetFrameForLink(container)var frame=container.getAttribute(“data-turbo-frame”);if(frame)return frame;container=container.closest(“turbo-frame”);return container?container.id:void 0get snapshot()return this.view.snapshot;varnavigator:dfxGdprChecker=session;function start()session.start()function registerAdapter(adapter)session.registerAdapter(adapter)function visit(location2,options)session.visit(location2,options)function connectStreamSource(source)session.connectStreamSource(source)function disconnectStreamSource(source)session.disconnectStreamSource(source)function renderStreamMessage(message)session.renderStreamMessage(message)function clearCache()session.clearCache()function setProgressBarDelay(delay)session.setProgressBarDelay(delay)function setConfirmMethod(confirmMethod)FormSubmission.confirmMethod=confirmMethodvar Turbo$1=Object.freeze(__proto__:null,navigator:dfxGdprChecker,session:session,PageRenderer:PageRenderer,PageSnapshot:PageSnapshot,start:start,registerAdapter:registerAdapter,visit:visit,connectStreamSource:connectStreamSource,disconnectStreamSource:disconnectStreamSource,renderStreamMessage:renderStreamMessage,clearCache:clearCache,setProgressBarDelay:setProgressBarDelay,setConfirmMethod:setConfirmMethod);class SnapshotSubstitutionconstructor(element)this.visitCachedSnapshot=(element:element2)=>varid:_a,clone=this;null!==(_a=element2.querySelector(“#”+_a))&&void 0!==_a&&_a.replaceWith(clone),this.clone=element.cloneNode(!0),this.id=element.idfunction getFrameElementById(element)if(null!=element)element=document.getElementById(element);if(element instanceof FrameElement)return elementfunction activateElement(element,currentURL)if(element)var src=element.getAttribute(“src”);if(null!=src&&null!=currentURL&&function urlsAreEqual(left,right)return expandURL(left).href==expandURL(right).href(src,currentURL))throw new Error(`Matching element has a source URL which references itself`);if((element=element.ownerDocument!==document?document.importNode(element,!0):element)instanceof FrameElement)return element.connectedCallback(),element.disconnectedCallback(),elementconst StreamActions=after()this.targetElements.forEach(e=>var _a;return null===(_a=e.parentElement)),append()this.removeDuplicateTargetChildren(),this.targetElements.forEach(e=>e.append(this.templateContent)),before()this.targetElements.forEach(e=>void 0===_a?void 0:_a.insertBefore(this.templateContent,e)),prepend()this.removeDuplicateTargetChildren(),this.targetElements.forEach(e=>e.prepend(this.templateContent)),remove()this.targetElements.forEach(e=>e.remove()),replace()this.targetElements.forEach(e=>e.replaceWith(this.templateContent)),update()this.targetElements.forEach(e=>e.innerHTML=””,e.append(this.templateContent));class StreamElement extends HTMLElementconnectedCallback()return __async$4(this,null,function*()tryyield this.render()catch(error)console.error(error)finallythis.disconnect())render()return __async$4(this,null,function*()var _a;return null!==(_a=this.renderPromise)&&void 0!==_a?_a:this.renderPromise=__async$4(this,null,function*()this.dispatchEvent(this.beforeRenderEvent)&&(yield nextAnimationFrame(),this.performAction())))disconnect()trythis.remove()catch(_a)removeDuplicateTargetChildren()this.duplicateChildren.forEach(c=>c.remove())get duplicateChildren()var _a;const existingChildren=this.targetElements.flatMap(e=>[…e.children]).filter(c=>!!c.id),newChildrenIds=[…null===(_a=this.templateContent)get performAction()if(this.action)var actionFunction=StreamActions[this.action];if(actionFunction)return actionFunction;this.raise(“unknown action”)this.raise(“action attribute is missing”)get targetElements()return this.target?this.targetElementsById:this.targets?this.targetElementsByQuery:void this.raise(“target or targets attribute is missing”)get templateContent()return this.templateElement.content.cloneNode(!0)get templateElement()if(this.firstElementChild instanceof HTMLTemplateElement)return this.firstElementChild;this.raise(“first child element must be a element”)get action()return this.getAttribute(“action”)get target()return this.getAttribute(“target”)get targets()return this.getAttribute(“targets”)raise(message)throw new Error(`$this.description: $message`)get description()var _b;return null!==(_b=(null!==(_b=this.outerHTML.match(/]+>/))&&void 0!==_b?_b:[])[0])&&void 0!==_b?_b:””get beforeRenderEvent()return new CustomEvent(“turbo:before-stream-render”,bubbles:!0,cancelable:!0)get targetElementsById()var element=null===(element=this.ownerDocument)get targetElementsByQuery()var elements=null===(elements=this.ownerDocument)FrameElement.delegateConstructor=class FrameController{constructor(element)this.fetchResponseLoaded=fetchResponse=>,this.currentFetchRequest=null,this.resolveVisitPromise=()=>,this.connected=!1,this.hasBeenLoaded=!1,this.settingSourceURL=!1,this.element=element,this.view=new FrameView(this,this.element),this.appearanceObserver=new AppearanceObserver(this,this.element),this.linkInterceptor=new LinkInterceptor(this,this.element),this.formInterceptor=new FormInterceptor(this,this.element)connect()this.connecteddisconnect()this.connected&&(this.connected=!1,this.appearanceObserver.stop(),this.linkInterceptor.stop(),this.formInterceptor.stop())disabledChanged()this.loadingStyle==FrameLoadingStyle.eager&&this.loadSourceURL()sourceURLChanged()this.loadingStyle!=FrameLoadingStyle.eager&&!this.hasBeenLoadedloadingStyleChanged()this.loadingStyle==FrameLoadingStyle.lazy?this.appearanceObserver.start():(this.appearanceObserver.stop(),this.loadSourceURL())loadSourceURL()return __async$4(this,null,function*()this.sourceURL!=this.currentURL))var previousURL=this.currentURL;if(this.currentURL=this.sourceURL,this.sourceURL)trythis.element.loaded=this.visit(expandURL(this.sourceURL)),this.appearanceObserver.stop(),yield this.element.loaded,this.hasBeenLoaded=!0catch(error)throw this.currentURL=previousURL,error)loadResponse(fetchResponse)return __async$4(this,null,function*()fetchResponse.succeeded&&fetchResponse.isHTML)&&(this.sourceURL=fetchResponse.response.url);tryvar body,snapshot,renderer,html=yield fetchResponse.responseHTML;html&&(body:body=parseHTMLDocument(html),snapshot=new Snapshot(yield this.extractForeignFrameElement(body)),renderer=new FrameRenderer(this.view.snapshot,snapshot,!1,!1),this.view.renderPromise&&(yield this.view.renderPromise),yield this.view.render(renderer),session.frameRendered(fetchResponse,this.element),session.frameLoaded(this.element),this.fetchResponseLoaded(fetchResponse))catch(error)console.error(error),this.view.invalidate()finallythis.fetchResponseLoaded=()=>)elementAppearedInViewport(element)this.loadSourceURL()shouldInterceptLinkClick(element,url)return!element.hasAttribute(“data-turbo-method”)&&this.shouldInterceptNavigation(element)linkClickIntercepted(element,url)this.reloadable=!0,this.navigateFrame(element,url)shouldInterceptFormSubmission(element,submitter)return this.shouldInterceptNavigation(element,submitter)formSubmissionIntercepted(element,fetchRequest)this.formSubmission&&this.formSubmission.stop(),this.reloadable=!1,this.formSubmission=new FormSubmission(this,element,fetchRequest);varfetchRequest=this.formSubmission;this.prepareHeadersForRequest(fetchRequest.headers,fetchRequest),this.formSubmission.start()prepareHeadersForRequest(headers,request)headers[“Turbo-Frame”]=this.idrequestStarted(request)markAsBusy(this.element)requestPreventedHandlingResponse(request,response)this.resolveVisitPromise()requestSucceededWithResponse(request,response)return __async$4(this,null,function*()yield this.loadResponse(response),this.resolveVisitPromise())requestFailedWithResponse(request,response)console.error(response),this.resolveVisitPromise()requestErrored(request,error)console.error(error),this.resolveVisitPromise()requestFinished(request)clearBusyState(this.element)formSubmissionStarted(formElement)markAsBusy(formElement,this.findFrameElement(formElement))formSubmissionSucceededWithResponse(formSubmission,response)const frame=this.findFrameElement(formSubmission.formElement,formSubmission.submitter);this.proposeVisitIfNavigatedWithAction(frame,formSubmission.formElement,formSubmission.submitter),frame.delegate.loadResponse(response)formSubmissionFailedWithResponse(formSubmission,fetchResponse)this.element.delegate.loadResponse(fetchResponse)formSubmissionErrored(formSubmission,error)console.error(error)formSubmissionFinished(formElement)clearBusyState(formElement,this.findFrameElement(formElement))allowsImmediateRender(snapshot,resume)return!0viewRenderedSnapshot(snapshot,isPreview)viewInvalidated()visit(url){return __async$4(this,null,function*()var _a;const request=new FetchRequest(this,FetchMethod.get,url,new URLSearchParams,this.element);return null!==(_a=this.currentFetchRequest)&&void 0!==_a&&_a.cancel(),this.currentFetchRequest=request,new Promise(resolve=>this.resolveVisitPromise=()=>this.resolveVisitPromise=()=>,this.currentFetchRequest=null,resolve(),request.perform()))}navigateFrame(element,url,submitter)const frame=this.findFrameElement(element,submitter);this.proposeVisitIfNavigatedWithAction(frame,element,submitter),frame.setAttribute(“reloadable”,””),frame.src=urlproposeVisitIfNavigatedWithAction(frame,element,submitter)const action=getAttribute(“data-turbo-action”,submitter,element,frame);if(isAction(action))constvisitCachedSnapshot=new SnapshotSubstitution(frame);frame.delegate.fetchResponseLoaded=response=>var statusCode;frame.src&&(statusCode:statusCode,redirected:response=response,response=statusCode:statusCode,redirected:response,responseHTML:frame.ownerDocument.documentElement.outerHTML,session.visit(frame.src,action:action,response:response,visitCachedSnapshot:visitCachedSnapshot,willRender:!1))findFrameElement(_a,submitter)return null!==(_a=getFrameElementById(getAttribute(“data-turbo-frame”,submitter,_a)extractForeignFrameElement(container)return __async$4(this,null,function*()let element;var id=CSS.escape(this.id);tryif(element=activateElement(container.querySelector(`turbo-frame#$id`),this.currentURL))return element;if(element=activateElement(container.querySelector(`turbo-frame[src][recurse~=$id]`),this.currentURL))return yield element.loaded,yield this.extractForeignFrameElement(element);console.error(`Response has no matching element`)catch(error)console.error(error)return new FrameElement)formActionIsVisitable(form,submitter)return locationIsVisitable(expandURL(getAction(form,submitter)),this.rootLocation)shouldInterceptNavigation(element,submitter)var frameElement=getAttribute(“data-turbo-frame”,submitter,element)get id()return this.element.idget enabled()return!this.element.disabledget sourceURL()if(this.element.src)return this.element.srcget reloadable()const frame=this.findFrameElement(this.element);return frame.hasAttribute(“reloadable”)set reloadable(value)const frame=this.findFrameElement(this.element);value?frame.setAttribute(“reloadable”,””):frame.removeAttribute(“reloadable”)set sourceURL(sourceURL)this.settingSourceURL=!0,this.element.src=null!=sourceURL?sourceURL:null,this.currentURL=this.element.src,this.settingSourceURL=!1get loadingStyle()return this.element.loadingget isLoading()return void 0!==this.formSubmissionget isActive()return this.element.isActive&&this.connectedget rootLocation()var _a=this.element.ownerDocument.querySelector(‘meta[name=”turbo-root”]’);return expandURL(null!==(_a=null==_a?void 0:_a.content)&&void 0!==_a?_a:”/”)},customElements.define(“turbo-frame”,FrameElement),customElements.define(“turbo-stream”,StreamElement),(()=>let element=document.currentScript;if(element&&!element.hasAttribute(“data-turbo-suppress-warning”))for(;element=element.parentElement;)if(element==document.body)return console.warn(unindent`
You are loading Turbo from a element inside the element. This is probably not what you meant to do!
Load your application’s JavaScript bundle inside the element instead. elements in are evaluated with each page change.
For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements
——
Suppress this warning by adding a “data-turbo-suppress-warning” attribute to: %s
`,element.outerHTML))(),window.Turbo=Turbo$1,start();Turbo$1=Object.freeze(__proto__:null,PageRenderer:PageRenderer,PageSnapshot:PageSnapshot,clearCache:clearCache,connectStreamSource:connectStreamSource,disconnectStreamSource:disconnectStreamSource,navigator:dfxGdprChecker,registerAdapter:registerAdapter,renderStreamMessage:renderStreamMessage,session:session,setConfirmMethod:setConfirmMethod,setProgressBarDelay:setProgressBarDelay,start:start,visit:visit);function createSingleton(removeOnTurboVisit=!1){return function(target,name,descriptor)const original=descriptor.value;return descriptor.value=(…result)=>var _a;window.DFX_SINGLETONS=null!=(_a=window.DFX_SINGLETONS)?_a:;const instanceId=`$target.prototype.constructor.name:$name`;if(removeOnTurboVisit)const turboCallback=()=>window.DFX_SINGLETONS[instanceId]&&(window.DFX_SINGLETONS[instanceId]=null),document.removeEventListener(“turbo:visit”,turboCallback);document.addEventListener(“turbo:visit”,turboCallback)if(window.DFX_SINGLETONS[instanceId])return window.DFX_SINGLETONS[instanceId];result=original.apply(this,result);return Object.defineProperty(window.DFX_SINGLETONS,instanceId,value:result,writable:!0),result,descriptor}class DfxLocalStorageCookieManager{constructor(localStorage)this.localStorage=localStorage,this.localStorage=localStorage;trythis.localStorage.setItem(“test”,”test”),this.localStorage.removeItem(“test”),this.isLocalStorageAvailable=!0catch(e)this.isLocalStorageAvailable=!1getCookie(matches)if(matches)matches=document.cookie.match(new RegExp(`(?:^setCookie(name,value,expires,domain,secure=!0)let cookieString=`$name=$value`;”string”==typeof expires&&(cookieString+=`;expires=$expires`),”string”==typeof domain&&(cookieString+=`;domain=$domain`),cookieString+=”; path=/”,secure&&”https:”===location.protocol&&(cookieString+=”; secure”),document.cookie=cookieStringdeleteCookie(name)this.setCookie(name,””,”Thu, 01 Jan 1970 00:00:00 UTC”)getLocalStorageOrCookie(name)var _a;return this.isLocalStorageAvailable&&null!=(_a=this.localStorage.getItem(name))?_a:this.getCookie(name)setLocalStorageOrCookie(name,value,expires,domain)this.isLocalStorageAvailable?this.localStorage.setItem(name,value):this.setCookie(name,value,expires,domain)deleteLocalStorageOrCookie(name)this.isLocalStorageAvailable?this.localStorage.removeItem(name):this.deleteCookie(name)}var __defProp$5=Object.defineProperty,__getOwnPropDesc$5=Object.getOwnPropertyDescriptor;class DfxLocalStorageCookieManagerFactorystatic create()return new DfxLocalStorageCookieManager(window.localStorage)((decorators,target,key,kind)=>for(var decorator,result=1<kind?void 0:kind?__getOwnPropDesc$5(target,key):target,i=decorators.length-1;0=levelnormalizeValue(value)let intValue=parseInt(value);return isNaN(intValue)&&(intValue=3),intValuevar __defProp$4=Object.defineProperty,__getOwnPropDesc$4=Object.getOwnPropertyDescriptor;class DfxGdprCheckerFactorystatic create()return new DfxGdprChecker(DfxLocalStorageCookieManagerFactory.create())((decorators,target,key,kind)=>)([createSingleton()],DfxGdprCheckerFactory,”create”,1);var __async$3=(__this,__arguments,generator)=>new Promise((resolve,reject)=>var fulfilled=value=>trystep(generator.next(value))catch(e)reject(e),rejected=value=>trystep(generator.throw(value))catch(e)reject(e),step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next()));const COUNTRIES_TO_REPLACE_MAP=new Map([[“GB”,”UK”]]);class DfxGeoLocationconstructor(geoJsUrl,dfxLocalStorageCookieManager)this.geoJsUrl=geoJsUrl,this.dfxLocalStorageCookieManager=dfxLocalStorageCookieManagerinit()return __async$3(this,null,function*()const redirectData=yield this.getRedirectData();COUNTRIES_TO_REPLACE_MAP.has(redirectData.country)&&(redirectData.country=COUNTRIES_TO_REPLACE_MAP.get(redirectData.country)),this.redirectData=redirectData,this.setBodyClasses().setLocationToStorage())getRedirectData()return __async$3(this,null,function*()if(this.redirectData)return this.redirectData;var redirectData=this.getLocationFromStorage();return redirectData?(this.redirectData=redirectData,this.redirectData):this.loadRedirectData())loadRedirectData()return new Promise(resolve=>const script=document.createElement(“script”);script.onload=()=>this.redirectData=window.redirectData,resolve(this.redirectData),script.setAttribute(“src”,this.geoJsUrl),document.head.appendChild(script))setBodyClasses()const countryCode=this.redirectData.country.toLowerCase();return document.body?(document.body.classList.remove(“dfx-country-pending”),document.body.classList.add(`dfx-country-$countryCode`)):document.addEventListener(“DOMContentLoaded”,()=>document.body.classList.remove(“dfx-country-pending”),document.body.classList.add(`dfx-country-$countryCode`),!1),thisgetLocationFromStorage()var _a=this.dfxLocalStorageCookieManager.getLocalStorageOrCookie(“dfx-redirectData_expiresIn”);return!!(_a&&parseInt(_a)>Date.now())&&JSON.parse(null!=(_a=this.dfxLocalStorageCookieManager.getLocalStorageOrCookie(“dfx-redirectData”))?_a:”false”)setLocationToStorage()const date=new Date;return date.setTime(date.getTime()+6048e5),this.dfxLocalStorageCookieManager.setLocalStorageOrCookie(“dfx-redirectData”,JSON.stringify(this.redirectData),date.toUTCString()),this.dfxLocalStorageCookieManager.setLocalStorageOrCookie(“dfx-redirectData_expiresIn”,`$date.getTime()`,date.toUTCString()),thisvar __defProp$3=Object.defineProperty,__getOwnPropDesc$3=Object.getOwnPropertyDescriptor;class DfxGeoLocationFactorystatic create()return new DfxGeoLocation(window.DFX_ENDPOINTS.geoJs,DfxLocalStorageCookieManagerFactory.create())((decorators,target,key,kind)=>for(var decorator,result=1<kind?void 0:kind?__getOwnPropDesc$3(target,key):target,i=decorators.length-1;0$(“head script”).filter((_i,el)=>el.src.includes(config.mainReportSuite)),document.addEventListener(“turbo:before-render”,event=>this.dfxAdobeTracking&&this.dfxAdobeTracking.refreshIframe(event.detail.newBody))_setDefaultStates()return this.adobeTrackingState=STATES.OFF,this.baiduState=STATES.OFF,this.pixelState=STATES.OFF,this.gptState=STATES.OFF,this.gtmState=STATES.OFF,this.taboolaState=STATES.OFF,this_resetInstruments()return this.gptInstrumentPairs=new Set,this_resetCategories()return this.gptCategories=category:””,subCategory:””,this_resetAssetClasses()return this.gptAssetClasses=new Set,this_resetSitecatConfig()return this.sitecatConfig=mainReportSuite:this.config.mainReportSuite,reportSuite:this.config.reportSuite,organisationId:this.config.organisationId,thiscreateAdobeTracking(adobeTrackingUrl)return __this=this,__arguments=null,generator=function*()if(this.dfxGdprChecker.checkLevel(2)&&this.allowedTrackingsConfig[TRACKINGS.ADOBE_TRACKING]&&this.adobeTrackingState===STATES.OFF)this.adobeTrackingState=STATES.LOADING;constDfxAdobeTracking=yield window.System.import(adobeTrackingUrl);this.dfxAdobeTracking=new DfxAdobeTracking(this.sitecatConfig,this.dfxGdprChecker,this.dfxLocalStorageCookieManager),this.adobeTrackingState=STATES.READY,this.runAdobeTracking(),new Promise((resolve,reject)=>var fulfilled=value=>trystep(generator.next(value))catch(e)reject(e),rejected=value=>trystep(generator.throw(value))catch(e)reject(e),step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next()));var __this,__arguments,generatorrunAdobeTracking()this.dfxGdprChecker.checkLevel(2)&&(this.adobeTrackingState===STATES.READY?(this.dfxAdobeTracking.resetTrackingObject(),this.dfxAdobeTracking.init()):setTimeout(()=>this.runAdobeTracking(),400))trackAdobeEvent(eventName,message,metrics)return this.dfxGdprChecker.checkLevel(2)&&this.allowedTrackingsConfig[TRACKINGS.ADOBE_TRACKING]&&(this.adobeTrackingState===STATES.READY?this.dfxAdobeTracking.trackEvent(eventName,message,metrics):setTimeout(()=>this.trackAdobeEvent(eventName,message,metrics),400)),thisgetPageNameForAdobeTracking()return this.adobeTrackingState===STATES.READY&&this.dfxAdobeTracking.getPageName()addSitecatConfig(key,value)return this.dfxGdprChecker.checkLevel(2)&&(this.sitecatConfig[key]=value),thiscreateFacebookPixel()if(!this.dfxGdprChecker.checkLevel(3))return this;if(!this.allowedTrackingsConfig[TRACKINGS.FACEBOOK_PIXEL]facebookPixelTrack(type)return this.dfxGdprChecker.checkLevel(3)&&this.allowedTrackingsConfig[TRACKINGS.FACEBOOK_PIXEL]&&(this.pixelState===STATES.OFF&&this.createFacebookPixel(),this.fbq(“track”,type)),thisfacebookPixelTrackPageView()return this.dfxGdprChecker.checkLevel(3)&&this.facebookPixelTrack(“PageView”),thisfacebookPixelTrackLead()return this.dfxGdprChecker.checkLevel(3)&&this.facebookPixelTrack(“Lead”),thiscreateGTM()createTwitterPixel()return this.dfxGdprChecker.checkLevel(3)&&this.allowedTrackingsConfig[TRACKINGS.TWITTER_PIXEL]&&(u=window,t=document,a=”script”,u.twqcreateGPT()this.gptState!==STATES.OFF)return this;this.gptState=STATES.LOADING;const scriptOnload=()=>this.gptState=STATES.READY;var googletag=window.googletagtrackGTMpageLoadEvent()return this.dfxGdprChecker.checkLevel(1)&&(window.dataLayer=window.dataLayercreateBaiduTracking()return this.dfxGdprChecker.checkLevel(2)&&this.allowedTrackingsConfig[TRACKINGS.BAIDU]&&this.baiduState!==STATES.READY&&(function()const hm=document.createElement(“script”);hm.src=”https://hm.baidu.com/hm.js?961aa7f85d30d676f24a6f928c035b90″;const s=document.getElementsByTagName(“script”)[0];s.parentNode.insertBefore(hm,s)(),function()const bp=document.createElement(“script”);var curProtocol=window.location.protocol.split(“:”)[0];bp.src=”https”===curProtocol?”https://zz.bdstatic.com/linksubmit/push.js”:”http://push.zhanzhang.baidu.com/push.js”;const s=document.getElementsByTagName(“script”)[0];s.parentNode.insertBefore(bp,s)(),this.baiduState=STATES.READY),thisaddGptAssetClasses(assetClasses)if(!Array.isArray(assetClasses))throw new TypeError(“Param assetClasses must be an Array”);return assetClasses.forEach(assetClass=>this.gptAssetClasses.add(assetClass)),thisaddGptInstrumentPairs(pairs)if(!Array.isArray(pairs))throw new TypeError(“Param pairs must be an Array”);return pairs.forEach(assetClass=>this.gptInstrumentPairs.add(assetClass)),thisaddGptCategories(category=””,subCategory=””)this.gptCategories=category:category,subCategory:subCategorygetGptAssetClasses()return this.gptAssetClassesgetGptInstrumentPairs()return this.gptInstrumentPairsgetGptCategory()return this.gptCategories.categorygetGptSubCategory()return this.gptCategories.subCategorycreateTaboolaPixel()taboolaPixelTrack(eventName)return this.dfxGdprChecker.checkLevel(3)&&this.allowedTrackingsConfig[TRACKINGS.TABOOLA_PIXEL]&&(this.pixelState===STATES.OFF&&this.createTaboolaPixel(),this.tfa.push(notify:”event”,name:eventName,id:this.taboolaPixelId)),this}class DfxConfigconstructor(config)this.config=configget(key)return this.config.get(key)set(key,value)this.config.set(key,value)var __defProp$2=Object.defineProperty,__getOwnPropDesc$2=Object.getOwnPropertyDescriptor;class DfxConfigFactorystatic create()var data=Object.assign(,window.DFX_CONFIG,window.DFX_ENDPOINTS),data=new Map(Object.entries(data));return new DfxConfig(data)((decorators,target,key,kind)=>result);kind&&result&&__defProp$2(target,key,result))([createSingleton()],DfxConfigFactory,”create”,1);var __defProp$1=Object.defineProperty,__getOwnPropDesc$1=Object.getOwnPropertyDescriptor;class DfxThirdPartyManagerFactorystatic create(allowedTrackingsConfig,config=window.DFX_CONFIG)const dfxConfig=DfxConfigFactory.create();return new DfxThirdPartyManager(DfxGdprCheckerFactory.create(),DfxLocalStorageCookieManagerFactory.create(),dfxConfig.get(“facebookPixelId”),dfxConfig.get(“tagManagerId”),dfxConfig.get(“tagManagerParams”),dfxConfig.get(“taboolaPixelId”),allowedTrackingsConfig,config)((decorators,target,key,kind)=>for(var decorator,result=1<kind?void 0:kind?__getOwnPropDesc$1(target,key):target,i=decorators.length-1;0var fulfilled=value=>trystep(generator.next(value))catch(e)reject(e),rejected=value=>trystep(generator.throw(value))catch(e)reject(e),step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next()));var __this,__arguments,generator}var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor;class DfxFontsFactorystatic create()return new DfxFonts(document)((decorators,target,key,kind)=>result);kind&&result&&__defProp(target,key,result))([createSingleton()],DfxFontsFactory,”create”,1);DfxFontsFactory.create();dfxGdprChecker=DfxGdprCheckerFactory.create();const loadScripts=()=>((__this,__arguments,generator)=>new Promise((resolve,reject)=>var fulfilled=value=>trystep(generator.next(value))catch(e)reject(e),rejected=value=>trystep(generator.throw(value))catch(e)reject(e),step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())))(window,null,function*()tryconst noscript=document.querySelector(“noscript.jsdfx-script”);if(!noscript)return;const imports=yield window.System.import(noscript.getAttribute(“data-src”));Object.keys(imports).forEach(key=>window[key]=imports[key]),window.runStacked()catch(error)console.error(error));document.addEventListener(“turbo:load”,()=>loadScripts()),window.turbo=Turbo$1,start(),DfxGeoLocationFactory.create().init(),exports.DfxGdprChecker=dfxGdprChecker,exports.DfxGdprCheckerFactory=DfxGdprCheckerFactory,exports.DfxGeoLocationFactory=DfxGeoLocationFactory,exports.DfxThirdPartyManagerFactory=DfxThirdPartyManagerFactory,Object.defineProperty(exports,”__esModule”,value:!0)}(this.window=this.window||);



Read The Original Article

Latest Articles

Explore More

%d bloggers like this: