1(self.webpackChunksketchfab=self.webpackChunksketchfab||[]).push([[988],{Chix:(e,n,o)=>{o("F67Y"),o("y+9Z"),o("Z5CY"),(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["front/macros/viewer.jinja"]={root:function(e,n,a,t,s){var i=null,r=null,l="";try{e.getTemplate("front/macros/model.jinja",!1,"front/macros/viewer.jinja",!1,(function(p,c){p?s(p):c.getExported((function(p,c){if(p)s(p);else if(c.hasOwnProperty("model_name")){var d=c.model_name;n.setVariable("model_name",d),l+="\n",e.getTemplate("front/macros/user.jinja",!1,"front/macros/viewer.jinja",!1,(function(p,c){p?s(p):c.getExported((function(p,c){if(p)s(p);else if(c.hasOwnProperty("user_avatar")){var d=c.user_avatar;n.setVariable("user_avatar",d),l+="\n",e.getTemplate("front/macros/logo.jinja",!1,"front/macros/viewer.jinja",!1,(function(p,c){p?s(p):c.getExported((function(p,c){if(p)s(p);else if(c.hasOwnProperty("logo")){var d=c.logo;if(n.setVariable("logo",d),c.hasOwnProperty("sketchfab_spinner")){var u=c.sketchfab_spinner;n.setVariable("sketchfab_spinner",u),l+="\n\n";var v=t.makeMacro(["model"],["options"],(function(o,s){var l=a;a=new t.Frame,(s=s||{}).hasOwnProperty("caller")&&a.set("caller",s.caller),a.set("model",o),a.set("options",s.hasOwnProperty("options")?s.options:{});var p="";return p+='\n\n <div class="titlebar">\n\n <div class="summary">\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiInfos")?(p+='\n <div class="avatar">\n ',t.memberLookup(o,"org")?(p+='\n <a target="_blank" aria-label="This Model" href="',p+=t.suppressValue(t.memberLookup(o,"viewerUrl"),e.opts.autoescape),p+='">',p+=t.suppressValue((i=12,r=104,t.callWrap(t.contextOrFrameLookup(n,a,"user_avatar"),"user_avatar",n,[t.memberLookup(t.memberLookup(o,"org"),"avatars"),{size:32}])),e.opts.autoescape),p+="</a>\n "):(p+='\n <a target="_blank" aria-label="Visit ',p+=t.suppressValue(e.getFilter("escape").call(n,t.memberLookup(t.memberLookup(o,"user"),"displayName")),e.opts.autoescape),p+='\'s Profile" href="',p+=t.suppressValue(t.memberLookup(t.memberLookup(o,"user"),"profileUrl"),e.opts.autoescape),p+='">',p+=t.suppressValue((i=14,r=149,t.callWrap(t.contextOrFrameLookup(n,a,"user_avatar"),"user_avatar",n,[t.memberLookup(t.memberLookup(o,"user"),"avatars"),{size:32}])),e.opts.autoescape),p+="</a>\n "),p+='\n </div>\n <div class="model-info">\n <h1 class="title">',p+=t.suppressValue((i=18,r=49,t.callWrap(t.contextOrFrameLookup(n,a,"model_name"),"model_name",n,[o,{target:"_blank",withRestrictedFlag:!1}])),e.opts.autoescape),p+="</h1>\n <h2>by\n ",t.memberLookup(o,"org")?(p+='\n <a target="_blank" href="',p+=t.suppressValue(t.memberLookup(o,"viewerUrl"),e.opts.autoescape),p+='">',p+=t.suppressValue(t.memberLookup(t.memberLookup(o,"org"),"displayName"),e.opts.autoescape),p+="</a>\n "):(p+='\n <a target="_blank" href="',p+=t.suppressValue(t.memberLookup(t.memberLookup(o,"user"),"profileUrl"),e.opts.autoescape),p+='">',p+=t.suppressValue(t.memberLookup(t.memberLookup(o,"user"),"displayName"),e.opts.autoescape),p+="</a>\n "),p+="\n </h2>\n </div>\n "):(p+='\n \x3c!-- useful for aria compatibility --\x3e\n <h1 class="title sr-only">',p+=t.suppressValue((i=29,r=53,t.callWrap(t.contextOrFrameLookup(n,a,"model_name"),"model_name",n,[o,{target:"_blank",withRestrictedFlag:!1}])),e.opts.autoescape),p+="</h1>\n "),p+='\n </div>\n\n <div class="actions">\n\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiInfos")&&t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"inStore")?(p+='\n <a class="help tooltip tooltip-down in-store" data-tooltip="Available on Store" target="_blank" href="',p+=t.suppressValue(t.memberLookup(o,"viewerUrl"),e.opts.autoescape),p+='">\n <i class="icon viewer-icon-usd"></i>\n </a>\n '):t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiInfos")&&t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"allowDownload")&&(p+='\n <a class="help tooltip tooltip-down download" data-tooltip="Download" target="_blank" href="',p+=t.suppressValue(t.memberLookup(o,"viewerUrl"),e.opts.autoescape),p+='#download">\n <i class="icon viewer-icon-download"></i>\n </a>\n '),p+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiInfos")&&(p+='\n <a class="help tooltip tooltip-down share" data-tooltip="Share" data-action="open-share-overlay">\n <i class="viewer-icon-share"></i>\n </a>\n '),p+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiStop")&&(p+='\n <a class="help tooltip tooltip-down close hidden" data-tooltip="Stop" data-action="stop">\n <i class="viewer-icon-close"></i>\n </a>\n '),p+="\n\n </div>\n\n </div>\n\n",a=l,new t.SafeString(p)}));n.addExport("viewer_infos"),n.setVariable("viewer_infos",v),l+="\n\n";var m=t.makeMacro(["message","model"],["options"],(function(o,s,l){var p=a;a=new t.Frame,(l=l||{}).hasOwnProperty("caller")&&a.set("caller",l.caller),a.set("message",o),a.set("model",s),a.set("options",l.hasOwnProperty("options")?l.options:{});var c="";return c+='\n <main class="viewer" aria-label="sketchfab-viewer">\n <div class="osd active">\n <div class="controls">\n ',c+=t.suppressValue((i=67,r=26,t.callWrap(t.contextOrFrameLookup(n,a,"watermark"),"watermark",n,[s,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+='\n </div>\n <div class="content">\n <div class="panel">\n <p class="panel__box">',c+=t.suppressValue(o,e.opts.autoescape),c+="</p>\n </div>\n </div>\n </div>\n </main>\n",a=p,new t.SafeString(c)}));n.addExport("viewer_message"),n.setVariable("viewer_message",m),l+="\n\n";var b=t.makeMacro(["model","options"],[],(function(o,s,l){var p=a;a=new t.Frame,(l=l||{}).hasOwnProperty("caller")&&a.set("caller",l.caller),a.set("model",o),a.set("options",s);var c="";return c+='\n <main class="viewer" aria-label="sketchfab-viewer">\n <div class="osd active">\n <div class="controls">\n ',c+=t.suppressValue((i=82,r=26,t.callWrap(t.contextOrFrameLookup(n,a,"watermark"),"watermark",n,[o,s])),e.opts.autoescape),c+='\n </div>\n <div class="content">\n <div class="panel">\n <div class="panel__box --centered">\n <p>\n This Sketchfab 3D model has been disabled.\n </p>\n </div>\n </div>\n </div>\n </div>\n </main>
1\n',a=p,new t.SafeString(c)}));n.addExport("disabled_model_message"),n.setVariable("disabled_model_message",b),l+="\n\n";var k=t.makeMacro(["model"],["options"],(function(o,s){var l=a;a=new t.Frame,(s=s||{}).hasOwnProperty("caller")&&a.set("caller",s.caller),a.set("model",o),a.set("options",s.hasOwnProperty("options")?s.options:{});var p,c="";return c+="\n ",p=t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"displayStatus")||t.memberLookup(o,"displayStatus"),a.set("display_status",p,!0),a.topLevel&&n.setVariable("display_status",p),a.topLevel&&n.addExport("display_status",p),c+="\n ","deleted"==t.contextOrFrameLookup(n,a,"display_status")?(c+="\n ",c+=t.suppressValue((i=100,r=23,t.callWrap(t.contextOrFrameLookup(n,a,"viewer_message"),"viewer_message",n,["This Sketchfab 3D model has been deleted.",o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+="\n\n "):"disabled"==t.contextOrFrameLookup(n,a,"display_status")?(c+="\n ",c+=t.suppressValue((i=103,r=31,t.callWrap(t.contextOrFrameLookup(n,a,"disabled_model_message"),"disabled_model_message",n,[o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+="\n\n "):"unsupported"==t.contextOrFrameLookup(n,a,"display_status")?(c+="\n ",c+=t.suppressValue((i=106,r=23,t.callWrap(t.contextOrFrameLookup(n,a,"viewer_message"),"viewer_message",n,["Password-protected 3D models are not supported through the Viewer API.",o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+="\n\n "):"draft"==t.contextOrFrameLookup(n,a,"display_status")?(c+="\n ",c+=t.suppressValue((i=109,r=23,t.callWrap(t.contextOrFrameLookup(n,a,"viewer_message"),"viewer_message",n,["This Sketchfab 3D model has not been published yet.",o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+="\n\n "):"ok"==t.contextOrFrameLookup(n,a,"display_status")&&(c+="\n ",c+=t.suppressValue((i=112,r=20,t.callWrap(t.contextOrFrameLookup(n,a,"show_viewer"),"show_viewer",n,[o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+="\n\n "),c+="\n\n",a=l,new t.SafeString(c)}));n.addExport("viewer"),n.setVariable("viewer",k),l+="\n\n";var h=t.makeMacro(["model"],["options"],(function(o,s){var l=a;a=new t.Frame,(s=s||{}).hasOwnProperty("caller")&&a.set("caller",s.caller),a.set("model",o),a.set("options",s.hasOwnProperty("options")?s.options:{});var p,c="";return c+="\n\n ",i=120,r=44,p=t.callWrap(t.contextOrFrameLookup(n,a,"help_article_url"),"help_article_url",n,["COMPATIBILITY"]),a.set("fallbackHelpLink",p,!0),a.topLevel&&n.setVariable("fallbackHelpLink",p),a.topLevel&&n.addExport("fallbackHelpLink",p),c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor")&&(c+='\n <style type="text/css">\n .viewer {\n --ui-color: ',c+=t.suppressValue(e.getFilter("format_color").call(n,e.getFilter("lower").call(n,t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor"))),e.opts.autoescape),c+="\n }\n </style>\n "),c+='\n <main class="viewer has-model ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"transparent")&&(c+=" transparent"),t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"autostart")&&(c+=" started"),"dark"==t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiTheme")&&(c+=" dark-appearance"),c+='" aria-label="sketchfab-viewer">\n\n ',c+=t.suppressValue((i=131,r=21,t.callWrap(t.contextOrFrameLookup(n,a,"viewer_infos"),"viewer_infos",n,[o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+='\n\n <div class="landing" data-action="start">\n\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"autostart")?t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiStop")&&(c+='\n <div class="preview">\n ',c+=t.suppressValue(e.getFilter("image_container").call(n,t.memberLookup(o,"thumbnails"),1024,768,!0,t.makeKeywordArgs({defer_images:!0,alt_text:t.memberLookup(o,"name")+" â Sketchfab embed 3D viewer"})),e.opts.autoescape),c+="\n </div>\n "):(c+='\n <div class="preview">\n ',c+=t.suppressValue(e.getFilter("image_container").call(n,t.memberLookup(o,"thumbnails"),1024,768,!0),e.opts.autoescape),c+="\n </div>\n "),c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiStart")&&(c+='\n <div class="start-button">\n <button class="play-button ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor")&&(c+="--colored"),c+='">\n <i class="viewer-icon-play"></i>
1\n <span class="label">3D</span>\n </button>\n </div>\n '),c+="\n\n ",c+=t.suppressValue((i=154,r=22,t.callWrap(t.contextOrFrameLookup(n,a,"watermark"),"watermark",n,[o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+='\n\n </div>\n\n <div class="overlays">\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"restricted")&&(c+='\n <div class="overlay restricted">\n <div>\n <h3 class="heading">Restricted Content</h3>\n <p>\n This 3D model contains restricted content.<br/>\n You need to enable restricted content to view this.\n </p>\n <button type="submit" class="button btn-input btn-primary submit btn-medium" data-action="allowRestricted">Enable restricted content</button>\n ',c+=t.suppressValue((i=168,r=29,t.callWrap(t.contextOrFrameLookup(n,a,"logo"),"logo",n,[121,25,{color:"#ffffff"}])),e.opts.autoescape),c+="\n </div>\n </div>\n "),c+='\n <div class="overlay help hidden">\n <a class="close viewer-icon-close" aria-label="close"></a>\n <div class="inner">\n <ul class="tabs">\n <li class="active"><a data-target="basic">Navigation basics</a></li>\n <li><a data-target="all">All controls</a></li>\n </ul>\n <div class="tabs-container" aria-hidden="true">\n <div class="tab active" data-tab="basic">\n <div class="tip">\n <div>\n <i class="viewer-icon-refresh"></i>\n </div>\n <div>\n <b>Orbit around</b>\n <div>\n Left click + drag or<br>\n One finger drag (touch)\n </div>\n </div>\n </div>\n <div class="tip">\n <div>\n <i class="viewer-icon-search-plus"></i>\n </div>\n <div>\n <b>Zoom</b>\n <div>\n Double click on model<br>\n or scroll anywhere or<br>\n Pinch (touch)\n </div>\n </div>\n </div>\n <div class="tip">\n <div>\n <i class="viewer-icon-arrows"></i>\n </div>\n <div>\n <b>Pan</b>\n <div>\n Right click + drag or<br />\n Two fingers drag (touch)\n </div>\n </div>\n </div>\n </div>\n <div class="tab" data-tab="all">\n <div>\n <div class="section">\n <span class="title">Orbit navigation</span>\n <b>Move camera:</b> 1-finger drag or Left Mouse Button<br>\n <b>Pan:</b> 2-finger drag or Right Mouse Button or <kbd>SHIFT</kbd>+ Left Mouse Button<br>\n <b>Zoom on object:</b> Double-tap or Double-click on object<br>\n <b>Zoom out:</b> Double-tap or Double-click on background<br>\n <b>Zoom:</b> Pinch in/out or Mousewheel or <kbd>CTRL</kbd> + Left Mouse Button<br>\n </div>\n <div class="section rendering-shortcuts"></div>\n <div class="section inspector-shortcuts"></div>\n <div class="section general-shortcuts"></div>\n <div class="section">
1\n <span class="title">Lighting</span>\n <b>Rotate lighting:</b> 3-finger drag or <kbd>ALT</kbd> + Left Mouse Button<br>\n <b>Rotate env. only:</b> <kbd>ALT</kbd> + <kbd>SHIFT</kbd> + Left Mouse Button<br>\n </div>\n <div class="section annotation-shortcuts"></div>\n <div class="section animation-shortcuts"></div>\n <div class="section sound-shortcuts"></div>\n <div class="section">\n <span class="title">First-person navigation</span>\n <b>Move:</b> <kbd>â</kbd>,<kbd>â</kbd>,<kbd>â</kbd>,<kbd>â</kbd> (or <kbd>W</kbd>,<kbd>A</kbd>,<kbd>S</kbd>,<kbd>D</kbd>)<br>\n <b>Look around:</b> 1-finger drag or Left Mouse Button<br>\n <b>Adjust speed:</b> Mousewheel<br>\n </div>\n </div>\n </div>\n </div>\n\n <div class="action">\n <button class="button" data-action="reset-camera">Reset camera view</button>\n </div>\n\n </div>\n </div>\n <div class="overlay share hidden">\n <a class="close viewer-icon-close" aria-label="close"></a>\n <div class="inner">\n <div class="share-link">\n <div class="text-field">\n <label for="copy-link-field">Link</label>\n <input id="copy-link-field" type="text" class="text" value="" readonly>\n <button data-clipboard-target=".text-field .text">copy</button>\n </div>\n </div>\n <div class="share-social">\n <a data-action="share-on-facebook" target="_blank"><i class="fa-brands fa-facebook"></i></a>\n <a data-action="share-on-twitter" target="_blank"><i class="fa-brands fa-twitter"></i></a>\n <a data-action="share-on-reddit" target="_blank"><i class="fa-brands fa-reddit"></i></a>\n <a data-action="share-on-tumblr" target="_blank"><i class="fa-brands fa-tumblr"></i></a>\n <a data-action="share-on-linkedin" target="_blank"><i class="fa-brands fa-linkedin"></i></a>\n <a data-action="share-on-pinterest" target="_blank"><i class="fa-brands fa-pinterest"></i></a>\n <a class="share-mail" target="_blank"><i class="viewer-icon-envelope"></i></a>\n </div>\n <div class="share-embed">\n <a class="button" href="" target="_blank">\n <i class="viewer-icon-code"></i> Embed\n </a>\n </div>\n </div>\n </div>\n <div class="overlay hotspots-overlay hidden">\n <a class="close viewer-icon-close" aria-label="close"></a>\n <div class="inner">\n <span class="hotspot-title"></span>\n <div class="hotspot-content js-scrollable markdown-rendered-content"></div>\n </div>\n </div>\n <div class="overlay ar ar-overlay-mobile hidden">\n <i class="viewer-icon-close close"></i>\n <div class="inner custom-scrollbar">\n <div class="header-helper">\n <p class=\'title\'>\n Your device is not compatible\n </p>\n </div>\n <div class="content-helper">\n <div class="row-helper">\n <div class="content-row">\n <div class="info">\n <p>\n Your version of\n <sp
1an class=\'mobilePlatform\'> </span>\n is too old to display models in AR.\n </p>\n <p>\n <span class=\'mobilePlatform\'> </span>\n <span class=\'minVersion\'> </span>\n or newer is required.\n </p>\n <p>\n <strong>\n Update your device or try on another device.\n </strong>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="overlay ar ar-overlay-desktop hidden">\n <i class="viewer-icon-close close"></i>\n <div class="inner custom-scrollbar">\n <div class="header-helper">\n <p class="title">\n Augmented Reality is only available on mobile or tablet devices\n </p>\n <p class="subtitle">\n Supported devices: iPhone 6S+ & iPad 5+ on iOS 12+ and Android 8.0+ with ARCore 1.9 support <br/>\n Open this page with such a device to experience AR.\n </p>\n </div>\n <div class="content-helper">\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiArQrcode")&&(c+='\n <div class="row-helper">\n <div class="content-row">\n <canvas id="qrCode" ></canvas>\n </div>\n </div>\n '),c+='\n <div class="row-helper ">\n <div class="content-row">\n <div class="text">\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiArQrcode")&&(c+='\n <p class="title">Open with QR Code:</p>\n <p>Scan this code to open the model on your device, then, tap on the AR icon.</p>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiArHelp")&&(c+='\n <p class="title">Open this link with your mobile:</p>\n <a class="url overlay-link" target="_blank" aria-label="Open AR on Mobile"></a>\n '),c+='\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="overlay ar ar-overlay-loading hidden">\n <i class="viewer-icon-close close"></i>\n <div class="inner">\n <div class=\'sketchfab-spinner\'>\n ',c+=t.suppressValue((i=363,r=41,t.callWrap(t.contextOrFrameLookup(n,a,"sketchfab_spinner"),"sketchfab_spinner",n,[])),e.opts.autoescape),c+="\n </div>\n <div class='text'>\n LOADING...\n </div>\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiArHelp")&&(c+='\n <div class=\'subText\'>\n If the loading takes too long, you can learn more\n <a class="overlay-link" href="',c+=t.suppressValue((i=371,r=71,t.callWrap(t.contextOrFrameLookup(n,a,"help_article_url"),"help_article_url",n,["APP_FREE_AR"])),e.opts.autoescape),c+='" target="_blank" rel="noopener noreferrer">here</a>\n </div>\n '),c+='\n </div>\n </div>\n <div class="overlay ar ar-overlay-error hidden">\n <i class="viewer-icon-close close"></i>\n <div class="inner">\n <div class="content-helper">\n <div class="row-helper">\n <div class="content-row">\n <div class="info">\n <p>\n AR is not available for this model yet.\n </p>\n <p>\n Please try again later or contact us if the problem persists.\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="overlay helper-vr-overlay hidden">\n <i class="viewer-icon-close close"></i>\n <div class="inner custom-scrollbar">\n <div class="header-helper">\n To view this model in virtual reality:\n </div>\n <div class="content-helper">\n <div class="row-helper">\n <div class="content-row">\n <div class="image"><i class="viewer-icon-mobile"></i></div>\n <div class="text">\n <div class="title">on mobile phone</div>\n <div>with Cardboard or similar</div>\n </div>\n </div>\n <ul class="info">\n <li>On your mobile, open this <a class="url overlay-link" target="_blank" href="#">link</a></li>\n </ul>\n </div>\n <div class="row-helper">\n <div class="content-row">\n <div class="image"><i class="viewer-icon-desktop"></i></div>\n <div class="text">\n <div class="title">on desktop PC </div>\n <div>with a VR headset</div>\n </div>\n </div>\n <ul class="info">\n <li><a href="https://immersiveweb.dev/" target="_blank" rel="noopener noreferrer nofollow" class=\'overlay-link\'>Learn more on the immersive web</a></li>\n <li>On Chrome, follow the instructions <a href="https://immersiveweb.dev/chrome-support.html" target="_blank" rel="noopener noreferrer nofollow" class=\'overlay-link\'>here</a></li>\n <li>Open this model</li>\n <li>Click on the VR icon</li>\n </ul>\n </div>\n </div>\n <div class="footer-helper">\n <a class="overlay-link" href="',c+=t.suppressValue((i=431,r=71,t.callWrap(t.contextOrFrameLookup(n,a,"help_article_url"),"help_article_url",n,["VIRTUAL_REALITY_VR"])),e.opts.autoescape),c+='" target="_blank" rel="noopener noreferrer">\n More info on Virtual Reality.\n </a>\n </div>\n </div>\n </div>\n </div>\n\n <div class="webgl">\n\n <canvas class="canvas" data-modelUid="',c+=t.suppressValue(t.memberLookup(o,"uid"),e.opts.autoescape),c+='" data-action="create-hotspot" aria-label="3D view of ',c+=t.suppressValue(t.memberLookup(o,"name"),e.opts.autoescape),c+='">\n </canvas>\n\n <div class="loading-container">\n <div class="secondary-progress ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor")&&(c+="--colored"),c+='">\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiLoading")&&(c+='\n <div class="secondary-progress-percentage"></div>\n <div class="secondary-progress-display"></div>\n '),c+='\n </div>\n <div class="main-progress ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor")&&(c+="--colored"),c+='">\n <img alt="Loading 3D Model" src="',c+=t.suppressValue(e.getFilter("best_fit").call(n,t.memberLookup(o,"thumbnails"),64,36),e.opts.autoescape),c+='" class="loading-thumbnail" />\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiLoading")&&(c+='\n <div class="main-progress-wrapper">\n <div class="main-progress-percentage loading-percentage">0%</div>\n <p>Loading 3D model</p>\n <div class="main-progress-display">\n <div class="main-progress-display__progress"></div>\n </div>\n </div>\n '),c+='\n </div>\n </div>\n\n <div class="hotspots"></div>\n\n <div class="gui">\n\n <div class="animation-not-supported hidden">\n <a class="close" aria-label="close"></a>\n <p>Model is too heavy for your device and can not be rendered properly</p>\n </div>\n\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiControl
1s")&&t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiAnnotations")&&(c+='\n <div class="hotspot-controls-responsive">\n <div data-title="Previous Annotation" data-action="prev-annotation">\n <div class="icon viewer-icon-caret-left"></div>\n </div>\n <div data-title="Next Annotation" data-action="next-annotation">\n <div class="icon viewer-icon-caret-right"></div>\n </div>\n </div>\n '),c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiInspector")&&(c+='\n <div class="model-inspector">\n <div class="model-inspector__menu">\n <div class="model-inspector__minimize"><i class="viewer-icon-caret-down" aria-hidden="true"></i>Model Inspector</div>\n <div class="model-inspector__content">\n <div class="model-inspector__modes custom-scrollbar js-scrollable">\n ',c+='\n </div>\n </div>\n </div>\n <div class="model-inspector__2D-options">\n <div class="model-inspector__UV-options"></div>\n <div class="model-inspector__material-options"></div>\n </div>\n <div class="model-inspector__empty-2d-view">\n </div>\n </div>\n '),c+='\n\n\n <div class="controls">\n ',c+=t.suppressValue((i=506,r=30,t.callWrap(t.contextOrFrameLookup(n,a,"watermark"),"watermark",n,[o,t.contextOrFrameLookup(n,a,"options")])),e.opts.autoescape),c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiControls")&&(c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiAnimations")&&(c+='\n <div class="animation-controls widget ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiFadeout")||(c+="no-fadeout"),c+='">\n <div class="timeline ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor")&&(c+="--colored"),c+='">\n <div class="timeline-wrapper">\n <div class="track">\n <div class="bar">\n </div>\n <div class="knob">\n </div>\n </div>\n </div>\n </div>\n <div class="animation-controls__buttons">\n <a class="control play fa" aria-label="Play Animation"></a>\n <a class="control next fa" aria-label="Next Animation"></a>\n <div class="animation-timer control progress help" data-unit="time">00:00.00</div>\n <div class="animation-list control has-menu">\n <p class="animation-name"></p>\n <div class="control-menu list">\n <div class="animation__options">\n <div class="toggle-button">\n <span class="toggle-button__option tooltip" data-tooltip="Repeat one">\n <input type="radio" name="animation-cycle" data-value="one" id="animation-cycle-one">\n <label for="animation-cycle-one"><i class="viewer-icon-cycle-repeat-one"></i></label>\n </span>
1\n <span class="toggle-button__option tooltip" data-tooltip="Repeat all">\n <input type="radio" name="animation-cycle" data-value="all" id="animation-cycle-all">\n <label for="animation-cycle-all"><i class="viewer-icon-cycle-repeat-all"></i></label>\n </span>\n <span class="toggle-button__option tooltip" data-tooltip="No repeat">\n <input type="radio" name="animation-cycle" data-value="none" id="animation-cycle-none">\n <label for="animation-cycle-none"><i class="viewer-icon-cycle-no-repeat"></i></label>\n </span>\n </div>\n <div class="toggle-button">\n <span class="toggle-button__option tooltip" data-tooltip="Speed x0.1">\n <input type="radio" name="animation-speed" data-value="0.1" id="animation-speed-point-one">\n <label for="animation-speed-point-one">x0.1</label>\n </span>\n <span class="toggle-button__option tooltip" data-tooltip="Speed x0.5">\n <input type="radio" name="animation-speed" data-value="0.5" id="animation-speed-point-five">\n <label for="animation-speed-point-five">x0.5</label>\n </span>\n <span class="toggle-button__option tooltip" data-tooltip="Speed x1">\n <input type="radio" name="animation-speed" data-value="1" id="animation-speed-one">\n <label for="animation-speed-one">x1</label>\n </span>\n <span class="toggle-button__option tooltip" data-tooltip="Speed x2">\n <input type="radio" name="animation-speed" data-value="2" id="animation-speed-two">\n <label for="animation-speed-two">x2</label>\n </span>\n </div>\n </div>\n <ul class="js-scrollable"></ul>\n </div>\n </div>\n </div>\n </div>\n '),c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiAnnotations")&&(c+='\n <div class="hotspot-controls widget has-menu ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiFadeout")||(c+="no-fadeout"),c+='">\n\n <div data-title="Previous Annotation" data-action="prev-annotation">\n <div class="icon viewer-icon-caret-left"></div>\n </div>\n\n <div class="hotspot-name default" data-action="toggle-annotation-list">\n Select an annotation\n </div>\n\n <div data-title="Next Annotation" data-action="next-annotation">\n <div class="icon viewer-icon-caret-right"></div>\n </div>\n\n <div class="list hotspots-list"></div>\n\n </div>\n '),c+='\n\n <div class="general-control
1s widget ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiFadeout")||(c+="no-fadeout"),c+='">\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiGeneralControls")&&(c+="\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiHelp")&&(c+='\n <a class="control tooltip help" data-tooltip="Help">\n <i class="viewer-icon-question"></i>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiSound")&&(c+='\n <a class="control volume" title="Volume (M)" draggable="false">\n <i class="viewer-icon-volume-up"></i>\n <div class="volume-menu">\n </div>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiSettings")&&(c+='\n <a class="control tooltip settings has-menu ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiColor")&&(c+="--colored"),c+='" data-tooltip="Settings">\n <i class="viewer-icon-gear"></i>\n <div class="control-menu settings-menu">\n <div class="control-menu-wrapper">\n <div class="control-menu-list"></div>\n <div class="control-menu-pane"></div>\n </div>\n </div>\n <span class="control-badge"></span>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiInspector")&&(c+='\n <a class="control tooltip inspector" data-tooltip="Model Inspector (i)" data-action="inspector">\n <i class="viewer-icon-inspector"></i>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiAr")&&t.memberLookup(o,"isPublished")&&(c+='\n <a class="control tooltip ar --always-visible" data-tooltip="View in AR">\n <i class="viewer-icon-ar"></i>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiVr")&&(c+='\n <a class="control tooltip vr ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiTheatre")||t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiFullscreen")||(c+="tooltip-right-bound"),c+='" data-tooltip="View in VR">\n <i class="viewer-icon-vr"></i>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiTheatre")&&(c+='\n <a class="control tooltip theatre" data-tooltip="Theatre Mode">\n <i class="viewer-icon-theatre"></i>\n </a>\n '),c+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiFullscreen")&&(c+='\n <a class="control tooltip tooltip-right-bound fullscreen --always-visible" data-tooltip="Fullscreen (f)">\n <i class="viewer-icon-fullscreen"></i>\n </a>\n '),c+="\n "),c+="\n </div>\n "),c+="\n </div>\n\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiSnapshots")&&(c+='\n <div class="snapshot-guides">\n </div>\n <div class="snapshot widget">\n <a class="button help">
1\n <span class="normal"><i class="icon viewer-icon-camera"></i> Save view</span>\n <span class="progress"><i class="icon viewer-icon-camera"></i> Saving…</span>\n <span class="success"><i class="icon viewer-icon-check"></i>Saved</span>\n <div class="tooltip tooltip-right">Save thumbnail and initial camera view</div>\n </a>\n <div class="img-container invisible"></div>\n </div>\n <div class="snapshot-flash">\n </div>\n '),c+='\n\n <div class="viewer-hint widget disabled">\n <div class="viewer-movehint">\n <i class="icon"></i>\n <span class="label"></span>\n </div>\n </div>\n\n </div>\n\n </div>\n\n <div class="osd widget">\n <div class="osd-content">\n </div>\n </div>\n\n <div class="fallback" style="display: none">\n\n <div class="fallback-viewport">\n <img src="" alt="',c+=t.suppressValue(t.memberLookup(o,"name"),e.opts.autoescape),c+=' 3D Model" class="fallback-sprite">\n </div>\n\n <div class="fallback-warning">\n <div class="inner">\n <h3>',c+=t.suppressValue(t.memberLookup(o,"name"),e.opts.autoescape),c+=' 3D Model</h3>\n <p data-nosnippet>\n Something went wrong with the 3D viewer.<br>\n <a href="',c+=t.suppressValue(t.contextOrFrameLookup(n,a,"fallbackHelpLink"),e.opts.autoescape),c+='" target="_blank" rel="noopener noreferrer">Learn how to fix it here</a>.\n </p>\n </div>\n </div>\n\n <div data-nosnippet class="fallback-error fallback-error-loading">\n <div class="inner">\n <p>Connection error. Please try again.</p>\n </div>\n </div>\n\n <div data-nosnippet class="fallback-error fallback-error-nofallback">\n <div class="inner">\n <p>Sorry, the model can\'t be displayed.</p>\n <p>Please check out <a href="',c+=t.suppressValue(t.contextOrFrameLookup(n,a,"fallbackHelpLink"),e.opts.autoescape),c+='" target="_blank" rel="noopener noreferrer">our FAQ</a> to learn how to fix this issue.</p>\n </div>\n </div>\n\n <div class="progress-bar">\n <div class="progress-bar-percentage"></div>\n <div class="progress-bar-display"></div>\n </div>\n\n <div class="progress-circle">\n <div class="progress-circle-percentage loading-percentage"></div>\n <svg class="progress-circle-display" version="1.1">\n <path class="progress-circle-path" fill="none" stroke="#1caad9" stroke-width="6" />\n </svg>\n </div>\n\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiControls")&&(c+='\n <div class="controls">\n <div class="control control-fullscreen fullscreen tooltip tooltip-left" data-tooltip="Fullscreen (f)" data-action="fullscreen">\n <div class="icon viewer-icon-fullscreen"></div>\n </div>\n </div>\n '),c+='\n\n </div>\n\n <div data-nosnippet class="embed-sandboxed-message">\n <p>It looks like your browser or this site is blocking some scripts or cookies necessary to properly display the viewer.</p>\n <p>View this model on Sketchfab :<br /><a href="',c+=t.suppressValue(t.memberLookup(o,"embedUrl"),e.opts.autoescape),c+='">',c+=t.suppressValue(t.memberLookup(o,"embedUrl"),e.opts.autoescape),c+='</a></p>\n <p>Or visit the Help Center for more information:<br /><a href="',c+=t.suppressValue(t.contextOrFrameLookup(n,a,"fallbackHelpLink"),e.opts.autoescape),c+='" target="_blank" rel="noopener noreferrer">',c+=t.suppressValue(t.contextOrFrameLookup(n,a,"fallbackHelpLink"),e.opts.autoescape),c+="</a></p>\n </div>\n </main>\n\n",a=l,new t.SafeString(c)}));n.addExport("show_viewer"),n.setVariable("show_viewer",h),l+="\n\n";var w=t.makeMacro(["hotspots"],[],(function(o,s){var i=a;a=new t.Frame,(s=s||{}).hasOwnProperty("caller")&&a.set("caller",s.caller),a.set("hotspots",o);var r="";r+='\n<a data-action="toggle-visibility" class="annotations-visibility --hide"></a>\n<a data-action="toggle-autopilot" class="annotations-autopilot --stopped"></a>\n<ul class="js-scrollable">\n ',a=a.push();var l=o;if(l)for(var p=l.length,c=0;c<l.length;c++){var d=l[c];a.set("hotspot",d),a.set("loop.index",c+1),a.set("loop.index0",c),a.set("loop.revindex",p-c),a.set("loop.revindex0",p-c-1),a.set("loop.first",0===c),a.set("loop.last",c===p-1),a.set("loop.length",p),r+='\n <li class="link"><a data-hotspot-target="',r+=t.suppressValue(t.memberLookup(t.contextOrFrameLookup(n,a,"loop"),"index0"),e.opts.autoescape),r+='" title="',r+=t.suppressValue(t.memberLookup(d,"name"),e.opts.autoescape),r+='"><span class="index">',r+=t.suppressValue(t.memberLookup(t.contextOrFrameLookup(n,a,"loop"),"index"),e.opts.autoescape),r+="</span> ",r+=t.suppressValue(t.memberLookup(d,"name"),e.opts.autoescape),r+="</a></li>\n "}return a=a.pop(),r+="\n</ul>\n",a=i,new t.SafeString(r)}));n.addExport("hotspots_list"),n.setVariable("hotspots_list",w),l+="\n\n";var L=t.makeMacro(["hasFullscreen"],[],(function(n,s){var i=a;a=new t.Frame,(s=s||{}).hasOwnProperty("caller")&&a.set("caller",s.caller),a.set("hasFullscreen",n);var r="";return r+='\n\n <div class="vr-mode-help">\n ',r+='\n <img src="',r+=t.suppressValue(o("366m"),e.opts.autoescape),r+='" width="96" height="116" alt="Place your landscape oriented phone in front of lenses">\n\n <p>\n ',r+=n?'\n <button class="button btn-textified" data-action="fullscreen">Switch to fullscreen</button><br>\n then place your phone into your Cardboard viewer\n ':"\n Place your phone into your Cardboard viewer\n ",r+="\
1n </p>\n </div>\n\n",a=i,new t.SafeString(r)}));n.addExport("help_vr_mode"),n.setVariable("help_vr_mode",L),l+="\n\n";var g=t.makeMacro(["model"],["options"],(function(o,s){var i=a;a=new t.Frame,(s=s||{}).hasOwnProperty("caller")&&a.set("caller",s.caller),a.set("model",o),a.set("options",s.hasOwnProperty("options")?s.options:{});var r="";return r+="\n ",t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiWatermark")&&(r+='\n <div class="watermark',r+=t.suppressValue(t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiWatermarkLink")?"":" tooltip tooltip-left-bound",e.opts.autoescape),r+='"\n ',t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiWatermarkLink")||(r+='\n data-tooltip="Powered by Sketchfab.com"\n '),r+="\n >\n <a\n ",r+="\n ",(t.memberLookup(t.contextOrFrameLookup(n,a,"options"),"uiWatermarkLink")||t.memberLookup(o,"isDeleted"))&&(r+='\n title="View on Sketchfab"\n data-action="watermark" href="',r+=t.suppressValue(t.memberLookup(o,"viewerUrl"),e.opts.autoescape),r+='" target="_blank"\n '),r+="\n ></a>\n </div>\n "),r+="\n",a=i,new t.SafeString(r)}));n.addExport("watermark"),n.setVariable("watermark",g),s(null,l+="\n")}else s(new Error("cannot import 'sketchfab_spinner'"))}else s(new Error("cannot import 'logo'"))}))}))}else s(new Error("cannot import 'user_avatar'"))}))}))}else s(new Error("cannot import 'model_name'"))}))}))}catch(e){s(t.handleError(e,i,r))}}}},"366m":(e,n,o)=>{"use strict";e.exports=o.p+"static/assets/images/viewer/15b78c50af7be77a7aac2d4ae3ed35e2-v2.svg"}}]); 2//# sourceMappingURL=2e55baede90a72b7e056eff25d4c05b1-v2.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.