{"product_id":"75833","title":"Kit de Torre Arriostrada de Piso de 27 m con Tramo STZ30G Galvanizada en Caliente (No incluye retenida).","description":"\u003cbody\u003e\n\n\n  \n    \u003cmeta charset=\"utf-8\"\u003e\n    \u003cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"\u003e\n\u003cscript type=\"text\/javascript\"\u003e(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:false},ajax:{deny_list:[\"bam.nr-data.net\"]}};(window.NREUM||(NREUM={})).loader_config={xpid:\"VwYEWVJbCxAHXFJXBAkFVFw=\",licenseKey:\"NRJS-624cf1b7bf4add3973c\",applicationID:\"783538228\"};;\/*! For license information please see nr-loader-full-1.246.1.min.js.LICENSE.txt *\/\n(()=\u003e{\"use strict\";var e,t,r={234:(e,t,r)=\u003e{r.d(t,{P_:()=\u003eg,Mt:()=\u003ev,C5:()=\u003es,DL:()=\u003ex,OP:()=\u003eS,lF:()=\u003eC,Yu:()=\u003eA,Dg:()=\u003em,CX:()=\u003ec,GE:()=\u003ew,sU:()=\u003ej});var n=r(8632),i=r(9567);const a={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},o={};function s(e){if(!e)throw new Error(\"All info objects require an agent identifier!\");if(!o[e])throw new Error(\"Info for \".concat(e,\" was never set\"));return o[e]}function c(e,t){if(!e)throw new Error(\"All info objects require an agent identifier!\");o[e]=(0,i.D)(t,a),(0,n.Qy)(e,o[e],\"info\")}const d=e=\u003e{if(!e||\"string\"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(7056),l=r(50);const f=()=\u003e{const e={mask_selector:\"*\",block_selector:\"[data-nr-block]\",mask_input_options:{color:!1,date:!1,\"datetime-local\":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{feature_flags:[],proxy:{assets:void 0,beacon:void 0},privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},metrics:{enabled:!0,autoStart:!0},page_action:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1,autoStart:!0},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},harvest:{tooManyRequestsDelay:60},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,sampling_rate:50,error_sampling_rate:50,collect_fonts:!1,inline_images:!1,inline_stylesheet:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector=t+\",[data-nr-mask]\":null===t?e.mask_selector=t:(0,l.Z)(\"An invalid session_replay.mask_selector was provided and will not be used\",t)},get block_class(){return\"nr-block\"},get ignore_class(){return\"nr-ignore\"},get mask_text_class(){return\"nr-mask\"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=\",\".concat(t):\"\"!==t\u0026\u0026(0,l.Z)(\"An invalid session_replay.block_selector was provided and will not be used\",t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t\u0026\u0026\"object\"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.Z)(\"An invalid session_replay.mask_input_option was provided and will not be used\",t)}},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0}}},h={},p=\"All configuration objects require an agent identifier!\";function g(e){if(!e)throw new Error(p);if(!h[e])throw new Error(\"Configuration for \".concat(e,\" was never set\"));return h[e]}function m(e,t){if(!e)throw new Error(p);h[e]=(0,i.D)(t,f()),(0,n.Qy)(e,h[e],\"config\")}function v(e,t){if(!e)throw new Error(p);var r=g(e);if(r){for(var n=t.split(\".\"),i=0;i\u003cn.length-1;i++)if(\"object\"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}const b={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},y={};function x(e){if(!e)throw new Error(\"All loader-config objects require an agent identifier!\");if(!y[e])throw new Error(\"LoaderConfig for \".concat(e,\" was never set\"));return y[e]}function w(e,t){if(!e)throw new Error(\"All loader-config objects require an agent identifier!\");y[e]=(0,i.D)(t,b),(0,n.Qy)(e,y[e],\"loader_config\")}const A=(0,n.mF)().o;var _=r(385),E=r(6818);const T={buildEnv:E.Re,customTransaction:void 0,disabled:!1,distMethod:E.gF,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,offset:Math.floor(_._A?.performance?.timeOrigin||_._A?.performance?.timing?.navigationStart||Date.now()),onerror:void 0,origin:\"\"+_._A.location,ptid:void 0,releaseIds:{},session:void 0,xhrWrappable:\"function\"==typeof _._A.XMLHttpRequest?.prototype?.addEventListener,version:E.q4,denyList:void 0},D={};function S(e){if(!e)throw new Error(\"All runtime objects require an agent identifier!\");if(!D[e])throw new Error(\"Runtime for \".concat(e,\" was never set\"));return D[e]}function j(e,t){if(!e)throw new Error(\"All runtime objects require an agent identifier!\");D[e]=(0,i.D)(t,T),(0,n.Qy)(e,D[e],\"runtime\")}function C(e){return function(e){try{const t=s(e);return!!t.licenseKey\u0026\u0026!!t.errorBeacon\u0026\u0026!!t.applicationID}catch(e){return!1}}(e)}},9567:(e,t,r)=\u003e{r.d(t,{D:()=\u003ei});var n=r(50);function i(e,t){try{if(!e||\"object\"!=typeof e)return(0,n.Z)(\"Setting a Configurable requires an object as input\");if(!t||\"object\"!=typeof t)return(0,n.Z)(\"Setting a Configurable requires a model to set its initial properties\");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),a=0===Object.keys(r).length?e:r;for(let o in a)if(void 0!==e[o])try{Array.isArray(e[o])\u0026\u0026Array.isArray(t[o])?r[o]=Array.from(new Set([...e[o],...t[o]])):\"object\"==typeof e[o]\u0026\u0026\"object\"==typeof t[o]?r[o]=i(e[o],t[o]):r[o]=e[o]}catch(e){(0,n.Z)(\"An error occurred while setting a property of a Configurable\",e)}return r}catch(e){(0,n.Z)(\"An error occured while setting a Configurable\",e)}}},6818:(e,t,r)=\u003e{r.d(t,{Re:()=\u003ei,gF:()=\u003ea,lF:()=\u003eo,q4:()=\u003en});const n=\"1.246.1\",i=\"PROD\",a=\"CDN\",o=\"2.0.0-alpha.11\"},385:(e,t,r)=\u003e{r.d(t,{FN:()=\u003es,IF:()=\u003eu,Nk:()=\u003ef,Tt:()=\u003ec,_A:()=\u003ea,cv:()=\u003eh,iS:()=\u003eo,il:()=\u003en,ux:()=\u003ed,v6:()=\u003ei,w1:()=\u003el});const n=\"undefined\"!=typeof window\u0026\u0026!!window.document,i=\"undefined\"!=typeof WorkerGlobalScope\u0026\u0026(\"undefined\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self.navigator instanceof WorkerNavigator||\"undefined\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis.navigator instanceof WorkerNavigator),a=n?window:\"undefined\"!=typeof WorkerGlobalScope\u0026\u0026(\"undefined\"!=typeof self\u0026\u0026self instanceof WorkerGlobalScope\u0026\u0026self||\"undefined\"!=typeof globalThis\u0026\u0026globalThis instanceof WorkerGlobalScope\u0026\u0026globalThis),o=Boolean(\"hidden\"===a?.document?.visibilityState),s=\"\"+a?.location,c=\/iPad|iPhone|iPod\/.test(a.navigator?.userAgent),d=c\u0026\u0026\"undefined\"==typeof SharedWorker,u=(()=\u003e{const e=a.navigator?.userAgent?.match(\/Firefox[\/\\s](\\d+\\.\\d+)\/);return Array.isArray(e)\u0026\u0026e.length\u003e=2?+e[1]:0})(),l=Boolean(n\u0026\u0026window.document.documentMode),f=!!a.navigator?.sendBeacon,h=Math.floor(a?.performance?.timeOrigin||a?.performance?.timing?.navigationStart||Date.now())},1117:(e,t,r)=\u003e{r.d(t,{w:()=\u003ea});var n=r(50);const i={agentIdentifier:\"\",ee:void 0};class a{constructor(e){try{if(\"object\"!=typeof e)return(0,n.Z)(\"shared context requires an object as input\");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=\u003e{let[t,r]=e;Object.keys(i).includes(t)\u0026\u0026(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)(\"An error occured while setting SharedContext\",e)}}}},8e3:(e,t,r)=\u003e{r.d(t,{L:()=\u003eu,R:()=\u003ec});var n=r(8325),i=r(1284),a=r(4322),o=r(3325);const s={};function c(e,t){const r={staged:!1,priority:o.p[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function d(e){e\u0026\u0026(s[e]||(s[e]=new Map))}function u(){let e=arguments.length\u003e0\u0026\u0026void 0!==arguments[0]?arguments[0]:\"\",t=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]?arguments[1]:\"feature\";if(d(e),!e||!s[e].get(t))return o(t);s[e].get(t).staged=!0;const r=[...s[e]];function o(t){const r=e?n.ee.get(e):n.ee,o=a.X.handlers;if(r.backlog\u0026\u0026o){var s=r.backlog[t],c=o[t];if(c){for(var d=0;s\u0026\u0026d\u003cs.length;++d)l(s[d],c);(0,i.D)(c,(function(e,t){(0,i.D)(t,(function(t,r){r[0].on(e,r[1])}))}))}delete o[t],r.backlog[t]=null,r.emit(\"drain-\"+t,[])}}r.every((e=\u003e{let[t,r]=e;return r.staged}))\u0026\u0026(r.sort(((e,t)=\u003ee[1].priority-t[1].priority)),r.forEach((t=\u003e{let[r]=t;s[e].delete(r),o(r)})))}function l(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],a=e[3],o=e[2];i.apply(a,o)}}))}},8325:(e,t,r)=\u003e{r.d(t,{A:()=\u003ec,ee:()=\u003ed});var n=r(8632),i=r(2210),a=r(234);class o{constructor(e){this.contextId=e}}var s=r(3117);const c=\"nr@context:\".concat(s.a),d=function e(t,r){var n={},s={},u={},f=!1;try{f=16===r.length\u0026\u0026(0,a.OP)(r).isolatedBacklog}catch(e){}var h={on:g,addEventListener:g,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i\u003cr.length;i++)r[i]===t\u0026\u0026r.splice(i,1)},emit:function(e,r,n,i,a){!1!==a\u0026\u0026(a=!0);if(d.aborted\u0026\u0026!i)return;t\u0026\u0026a\u0026\u0026t.emit(e,r,n);for(var o=p(n),c=m(e),u=c.length,l=0;l\u003cu;l++)c[l].apply(o,r);var f=b()[s[e]];f\u0026\u0026f.push([h,e,r,o]);return o},get:v,listeners:m,context:p,buffer:function(e,t){const r=b();if(t=t||\"feature\",h.aborted)return;Object.entries(e||{}).forEach((e=\u003e{let[n,i]=e;s[i]=t,t in r||(r[t]=[])}))},abort:l,aborted:!1,isBuffering:function(e){return!!b()[s[e]]},debugId:r,backlog:f?{}:t\u0026\u0026\"object\"==typeof t.backlog?t.backlog:{}};return h;function p(e){return e\u0026\u0026e instanceof o?e:e?(0,i.X)(e,c,(()=\u003enew o(c))):new o(c)}function g(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function v(t){return u[t]=u[t]||e(h,t)}function b(){return h.backlog}}(void 0,\"globalEE\"),u=(0,n.fP)();function l(){d.aborted=!0,d.backlog={}}u.ee||(u.ee=d)},5546:(e,t,r)=\u003e{r.d(t,{E:()=\u003en,p:()=\u003ei});var n=r(8325).ee.get(\"handle\");function i(e,t,r,i,a){a?(a.buffer([e],i),a.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=\u003e{r.d(t,{X:()=\u003ea});var n=r(5546);a.on=o;var i=a.handlers={};function a(e,t,r,a){o(a||n.E,i,e,t,r)}function o(e,t,r,i,a){a||(a=\"feature\"),e||(e=n.E);var o=t[a]=t[a]||{};(o[r]=o[r]||[]).push([e,i])}},3239:(e,t,r)=\u003e{r.d(t,{bP:()=\u003es,iz:()=\u003ec,m$:()=\u003eo});var n=r(385);let i=!1,a=!1;try{const e={get passive(){return i=!0,!1},get signal(){return a=!0,!1}};n._A.addEventListener(\"test\",null,e),n._A.removeEventListener(\"test\",null,e)}catch(e){}function o(e,t){return i||a?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length\u003e2\u0026\u0026void 0!==arguments[2]\u0026\u0026arguments[2],n=arguments.length\u003e3?arguments[3]:void 0;window.addEventListener(e,t,o(r,n))}function c(e,t){let r=arguments.length\u003e2\u0026\u0026void 0!==arguments[2]\u0026\u0026arguments[2],n=arguments.length\u003e3?arguments[3]:void 0;document.addEventListener(e,t,o(r,n))}},3117:(e,t,r)=\u003e{r.d(t,{a:()=\u003en});const n=(0,r(4402).Rl)()},4402:(e,t,r)=\u003e{r.d(t,{Ht:()=\u003ed,M:()=\u003ec,Rl:()=\u003eo,ky:()=\u003es});var n=r(385);const i=\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";function a(e,t){return e?15\u0026e[t]:16*Math.random()|0}function o(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e\u0026\u0026e.getRandomValues\u0026\u0026(t=e.getRandomValues(new Uint8Array(31))),i.split(\"\").map((e=\u003e\"x\"===e?a(t,++r).toString(16):\"y\"===e?(3\u0026a()|8).toString(16):e)).join(\"\")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t\u0026\u0026t.getRandomValues\u0026\u0026(r=t.getRandomValues(new Uint8Array(31)));const o=[];for(var s=0;s\u003ce;s++)o.push(a(r,++i).toString(16));return o.join(\"\")}function c(){return s(16)}function d(){return s(32)}},7056:(e,t,r)=\u003e{r.d(t,{Bq:()=\u003en,Hb:()=\u003ea,oD:()=\u003ei});const n=\"NRBA\",i=144e5,a=18e5},7894:(e,t,r)=\u003e{function n(){return Math.round(performance.now())}r.d(t,{z:()=\u003en})},7243:(e,t,r)=\u003e{r.d(t,{e:()=\u003ei});var n=r(385);function i(e){if(0===(e||\"\").indexOf(\"data:\"))return{protocol:\"data\"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(\":\")),sameOrigin:t.protocol===n._A?.location?.protocol\u0026\u0026t.host===n._A?.location?.host};return r.port\u0026\u0026\"\"!==r.port||(\"http:\"===t.protocol\u0026\u0026(r.port=\"80\"),\"https:\"===t.protocol\u0026\u0026(r.port=\"443\")),r.pathname\u0026\u0026\"\"!==r.pathname?r.pathname.startsWith(\"\/\")||(r.pathname=\"\/\".concat(r.pathname)):r.pathname=\"\/\",r}catch(e){return{}}}},50:(e,t,r)=\u003e{function n(e,t){\"function\"==typeof console.warn\u0026\u0026(console.warn(\"New Relic: \".concat(e)),t\u0026\u0026console.warn(t))}r.d(t,{Z:()=\u003en})},2587:(e,t,r)=\u003e{r.d(t,{N:()=\u003ec,T:()=\u003ed});var n=r(8325),i=r(5546),a=r(3325);const o={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]},s=new Set;function c(e,t){const r=n.ee.get(t);e\u0026\u0026\"object\"==typeof e\u0026\u0026(s.has(t)||Object.entries(e).forEach((e=\u003e{let[t,n]=e;o[t]?o[t].forEach((e=\u003e{n?(0,i.p)(\"feat-\"+t,[],void 0,e,r):(0,i.p)(\"block-\"+t,[],void 0,e,r),(0,i.p)(\"rumresp-\"+t,[Boolean(n)],void 0,e,r)})):n\u0026\u0026(0,i.p)(\"feat-\"+t,[],void 0,void 0,r),d[t]=Boolean(n)})),Object.keys(o).forEach((e=\u003e{void 0===d[e]\u0026\u0026(o[e]?.forEach((t=\u003e(0,i.p)(\"rumresp-\"+e,[!1],void 0,t,r))),d[e]=!1)})),s.add(t))}const d={}},2210:(e,t,r)=\u003e{r.d(t,{X:()=\u003ei});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=\u003e{r.d(t,{D:()=\u003en});const n=(e,t)=\u003eObject.entries(e||{}).map((e=\u003e{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=\u003e{r.d(t,{P:()=\u003ea});var n=r(8325);const i=()=\u003e{const e=new WeakSet;return(t,r)=\u003e{if(\"object\"==typeof r\u0026\u0026null!==r){if(e.has(r))return;e.add(r)}return r}};function a(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit(\"internal-error\",[e])}catch(e){}}}},3960:(e,t,r)=\u003e{r.d(t,{K:()=\u003eo,b:()=\u003ea});var n=r(3239);function i(){return\"undefined\"==typeof document||\"complete\"===document.readyState}function a(e,t){if(i())return e();(0,n.bP)(\"load\",e,t)}function o(e){if(i())return e();(0,n.iz)(\"DOMContentLoaded\",e)}},8632:(e,t,r)=\u003e{r.d(t,{EZ:()=\u003ed,Qy:()=\u003ec,ce:()=\u003ea,fP:()=\u003eo,gG:()=\u003eu,mF:()=\u003es});var n=r(7894),i=r(385);const a={beacon:\"bam.nr-data.net\",errorBeacon:\"bam.nr-data.net\"};function o(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic\u0026\u0026(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=o();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=o();const a=i.initializedAgents||{},s=a[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...a,[e]:{...s,[r]:t}},i}function d(e,t){o()[e]=t}function u(){return function(){let e=o();const t=e.info||{};e.info={beacon:a.beacon,errorBeacon:a.errorBeacon,...t}}(),function(){let e=o();const t=e.init||{};e.init={...t}}(),s(),function(){let e=o();const t=e.loader_config||{};e.loader_config={...t}}(),o()}},7956:(e,t,r)=\u003e{r.d(t,{N:()=\u003ei});var n=r(3239);function i(e){let t=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]\u0026\u0026arguments[1],r=arguments.length\u003e2?arguments[2]:void 0,i=arguments.length\u003e3?arguments[3]:void 0;(0,n.iz)(\"visibilitychange\",(function(){if(t)return void(\"hidden\"===document.visibilityState\u0026\u0026e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=\u003e{r.d(t,{em:()=\u003eb,u5:()=\u003eS,QU:()=\u003eP,Kf:()=\u003eI});var n=r(8325),i=r(3117);const a=\"nr@original:\".concat(i.a);var o=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,a){n||(n=\"\");const o=\"-\"===n.charAt(0);for(let s=0;s\u003ct.length;s++){const c=t[s],d=e[c];u(d)||(e[c]=r(d,o?c+n:n,i,c,a))}},r.flag=a,r;function r(t,r,n,s,c){return u(t)?t:(r||(r=\"\"),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty\u0026\u0026Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){d([e],r)}for(var n in e)o.call(e,n)\u0026\u0026(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,u,l;try{o=this,a=[...arguments],u=\"function\"==typeof n?n(a,o):n||{}}catch(t){d([t,\"\",[a,o,s],u],e)}i(r+\"start\",[a,o,s],u,c);try{return l=t.apply(o,a)}catch(e){throw i(r+\"err\",[a,o,e],u,c),e}finally{i(r+\"end\",[a,o,l],u,c)}}}function i(r,n,i,a){if(!s||t){var o=s;s=!0;try{e.emit(r,n,i,t,a)}catch(t){d([t,r,n,i],e)}s=o}}}function d(e,t){t||(t=n.ee);try{t.emit(\"internal-error\",e)}catch(e){}}function u(e){return!(e\u0026\u0026\"function\"==typeof e\u0026\u0026e.apply\u0026\u0026!e[a])}var l=r(2210),f=r(385);const h={},p=f._A.XMLHttpRequest,g=\"addEventListener\",m=\"removeEventListener\",v=\"nr@wrapped:\".concat(n.A);function b(e){var t=function(e){return(e||n.ee).get(\"events\")}(e);if(h[t.debugId]++)return t;h[t.debugId]=1;var r=c(t,!0);function i(e){r.inPlace(e,[g,m],\"-\",a)}function a(e,t){return e[1]}return\"getPrototypeOf\"in Object\u0026\u0026(f.il\u0026\u0026y(document,i),y(f._A,i),y(p.prototype,i)),t.on(g+\"-start\",(function(e,t){var n=e[1];if(null!==n\u0026\u0026(\"function\"==typeof n||\"object\"==typeof n)){var i=(0,l.X)(n,v,(function(){var e={object:function(){if(\"function\"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,\"fn-\",null,e.name||\"anonymous\"):n}));this.wrapped=e[1]=i}})),t.on(m+\"-start\",(function(e){e[1]=this.wrapped||e[1]})),t}function y(e,t){let r=e;for(;\"object\"==typeof r\u0026\u0026!Object.prototype.hasOwnProperty.call(r,g);)r=Object.getPrototypeOf(r);for(var n=arguments.length,i=new Array(n\u003e2?n-2:0),a=2;a\u003cn;a++)i[a-2]=arguments[a];r\u0026\u0026t(r,...i)}var x=\"fetch-\",w=x+\"body-\",A=[\"arrayBuffer\",\"blob\",\"json\",\"text\",\"formData\"],_=f._A.Request,E=f._A.Response,T=\"prototype\";const D={};function S(e){const t=function(e){return(e||n.ee).get(\"fetch\")}(e);if(!(_\u0026\u0026E\u0026\u0026f._A.fetch))return t;if(D[t.debugId]++)return t;function r(e,r,i){var a=e[r];\"function\"==typeof a\u0026\u0026(e[r]=function(){var e,r=[...arguments],o={};t.emit(i+\"before-start\",[r],o),o[n.A]\u0026\u0026o[n.A].dt\u0026\u0026(e=o[n.A].dt);var s=a.apply(this,r);return t.emit(i+\"start\",[r,e],s),s.then((function(e){return t.emit(i+\"end\",[null,e],s),e}),(function(e){throw t.emit(i+\"end\",[e],s),e}))})}return D[t.debugId]=1,A.forEach((e=\u003e{r(_[T],e,w),r(E[T],e,w)})),r(f._A,\"fetch\",x),t.on(x+\"end\",(function(e,r){var n=this;if(r){var i=r.headers.get(\"content-length\");null!==i\u0026\u0026(n.rxSize=i),t.emit(x+\"done\",[null,r],n)}else t.emit(x+\"done\",[e],n)})),t}const j={},C=[\"pushState\",\"replaceState\"];function P(e){const t=function(e){return(e||n.ee).get(\"history\")}(e);return!f.il||j[t.debugId]++||(j[t.debugId]=1,c(t).inPlace(window.history,C,\"-\")),t}var O=r(3239);var R=r(50);const k={},N=[\"open\",\"send\"];function I(e){var t=e||n.ee;const r=function(e){return(e||n.ee).get(\"xhr\")}(t);if(k[r.debugId]++)return r;k[r.debugId]=1,b(t);var i=c(r),a=f._A.XMLHttpRequest,o=f._A.MutationObserver,s=f._A.Promise,d=f._A.setInterval,u=\"readystatechange\",l=[\"onload\",\"onerror\",\"onabort\",\"onloadstart\",\"onloadend\",\"onprogress\",\"ontimeout\"],h=[],p=f._A.XMLHttpRequest=function(e){const t=new a(e),n=r.context(t);try{r.emit(\"new-xhr\",[t],n),t.addEventListener(u,(o=n,function(){var e=this;e.readyState\u003e3\u0026\u0026!o.resolved\u0026\u0026(o.resolved=!0,r.emit(\"xhr-resolved\",[],e)),i.inPlace(e,l,\"fn-\",w)}),(0,O.m$)(!1))}catch(e){(0,R.Z)(\"An error occurred while intercepting XHR\",e);try{r.emit(\"internal-error\",[e])}catch(e){}}var o;return t};function g(e,t){i.inPlace(t,[\"onreadystatechange\"],\"fn-\",w)}if(function(e,t){for(var r in e)t[r]=e[r]}(a,p),p.prototype=a.prototype,i.inPlace(p.prototype,N,\"-xhr-\",w),r.on(\"send-xhr-start\",(function(e,t){g(e,t),function(e){h.push(e),o\u0026\u0026(m?m.then(x):d?d(x):(v=-v,y.data=v))}(t)})),r.on(\"open-xhr-start\",g),o){var m=s\u0026\u0026s.resolve();if(!d\u0026\u0026!s){var v=1,y=document.createTextNode(v);new o(x).observe(y,{characterData:!0})}}else t.on(\"fn-end\",(function(e){e[0]\u0026\u0026e[0].type===u||x()}));function x(){for(var e=0;e\u003ch.length;e++)g(0,h[e]);h.length\u0026\u0026(h=[])}function w(e,t){return t}return r}},7825:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.ajax},6660:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.jserrors},3081:(e,t,r)=\u003e{r.d(t,{gF:()=\u003ea,mY:()=\u003ei,t9:()=\u003en,vz:()=\u003es,xS:()=\u003eo});const n=r(3325).D.metrics,i=\"sm\",a=\"cm\",o=\"storeSupportabilityMetrics\",s=\"storeEventMetrics\"},4649:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.pageAction},7633:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.pageViewEvent},9251:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.pageViewTiming},7144:(e,t,r)=\u003e{r.d(t,{t:()=\u003en});const n=r(3325).D.sessionReplay},3614:(e,t,r)=\u003e{r.d(t,{BST_RESOURCE:()=\u003ei,END:()=\u003es,FEATURE_NAME:()=\u003en,FN_END:()=\u003ed,FN_START:()=\u003ec,PUSH_STATE:()=\u003eu,RESOURCE:()=\u003ea,START:()=\u003eo});const n=r(3325).D.sessionTrace,i=\"bstResource\",a=\"resource\",o=\"-start\",s=\"-end\",c=\"fn\"+o,d=\"fn\"+s,u=\"pushState\"},5938:(e,t,r)=\u003e{r.d(t,{W:()=\u003ei});var n=r(8325);class i{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=n.ee.get(e),this.featureName=r,this.blocked=!1}}},7530:(e,t,r)=\u003e{r.d(t,{j:()=\u003eb});var n=r(3325),i=r(234),a=r(5546),o=r(8325),s=r(7894),c=r(8e3),d=r(3960),u=r(385),l=r(50),f=r(3081),h=r(8632);function p(){const e=(0,h.gG)();[\"setErrorHandler\",\"finished\",\"addToTrace\",\"addRelease\",\"addPageAction\",\"setCurrentRouteName\",\"setPageViewName\",\"setCustomAttribute\",\"interaction\",\"noticeError\",\"setUserId\",\"setApplicationVersion\",\"start\"].forEach((t=\u003e{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i\u003cr;i++)n[i]=arguments[i];return function(t){for(var r=arguments.length,n=new Array(r\u003e1?r-1:0),i=1;i\u003cr;i++)n[i-1]=arguments[i];let a=[];return Object.values(e.initializedAgents).forEach((e=\u003e{e.exposed\u0026\u0026e.api[t]\u0026\u0026a.push(e.api[t](...n))})),a.length\u003e1?a:a[0]}(t,...n)}}))}var g=r(2587);const m=e=\u003e{const t=e.startsWith(\"http\");e+=\"\/\",r.p=t?e:\"https:\/\/\"+e};let v=!1;function b(e){let t=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]?arguments[1]:{},b=arguments.length\u003e2?arguments[2]:void 0,y=arguments.length\u003e3?arguments[3]:void 0,{init:x,info:w,loader_config:A,runtime:_={loaderType:b},exposed:E=!0}=t;const T=(0,h.gG)();w||(x=T.init,w=T.info,A=T.loader_config),(0,i.Dg)(e,x||{}),(0,i.GE)(e,A||{}),w.jsAttributes??={},u.v6\u0026\u0026(w.jsAttributes.isWorker=!0),(0,i.CX)(e,w);const D=(0,i.P_)(e),S=[w.beacon,w.errorBeacon];v||(v=!0,D.proxy.assets\u0026\u0026(m(D.proxy.assets),S.push(D.proxy.assets)),D.proxy.beacon\u0026\u0026S.push(D.proxy.beacon)),_.denyList=[...D.ajax.deny_list||[],...D.ajax.block_internal?S:[]],(0,i.sU)(e,_),p();const j=function(e,t){t||(0,c.R)(e,\"api\");const h={};var p=o.ee.get(e),g=p.get(\"tracer\"),m=\"api-\",v=m+\"ixn-\";function b(t,r,n,a){const o=(0,i.C5)(e);return null===r?delete o.jsAttributes[t]:(0,i.CX)(e,{...o,jsAttributes:{...o.jsAttributes,[t]:r}}),w(m,n,!0,a||null===r?\"session\":void 0)(t,r)}function y(){}[\"setErrorHandler\",\"finished\",\"addToTrace\",\"addRelease\"].forEach((e=\u003e{h[e]=w(m,e,!0,\"api\")})),h.addPageAction=w(m,\"addPageAction\",!0,n.D.pageAction),h.setCurrentRouteName=w(m,\"routeName\",!0,n.D.spa),h.setPageViewName=function(t,r){if(\"string\"==typeof t)return\"\/\"!==t.charAt(0)\u0026\u0026(t=\"\/\"+t),(0,i.OP)(e).customTransaction=(r||\"http:\/\/custom.transaction\")+t,w(m,\"setPageViewName\",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length\u003e2\u0026\u0026void 0!==arguments[2]\u0026\u0026arguments[2];if(\"string\"==typeof e){if([\"string\",\"number\",\"boolean\"].includes(typeof t)||null===t)return b(e,t,\"setCustomAttribute\",r);(0,l.Z)(\"Failed to execute setCustomAttribute.\\nNon-null value must be a string, number or boolean type, but a type of \u003c\".concat(typeof t,\"\u003e was provided.\"))}else(0,l.Z)(\"Failed to execute setCustomAttribute.\\nName must be a string type, but a type of \u003c\".concat(typeof e,\"\u003e was provided.\"))},h.setUserId=function(e){if(\"string\"==typeof e||null===e)return b(\"enduser.id\",e,\"setUserId\",!0);(0,l.Z)(\"Failed to execute setUserId.\\nNon-null value must be a string type, but a type of \u003c\".concat(typeof e,\"\u003e was provided.\"))},h.setApplicationVersion=function(e){if(\"string\"==typeof e||null===e)return b(\"application.version\",e,\"setApplicationVersion\",!1);(0,l.Z)(\"Failed to execute setApplicationVersion. Expected \u003cString | null\u003e, but got \u003c\".concat(typeof e,\"\u003e.\"))},h.start=e=\u003e{try{const t=e?\"defined\":\"undefined\";(0,a.p)(f.xS,[\"API\/start\/\".concat(t,\"\/called\")],void 0,n.D.metrics,p);const r=Object.values(n.D);if(void 0===e)e=r;else{if((e=Array.isArray(e)\u0026\u0026e.length?e:[e]).some((e=\u003e!r.includes(e))))return(0,l.Z)(\"Invalid feature name supplied. Acceptable feature names are: \".concat(r));e.includes(n.D.pageViewEvent)||e.push(n.D.pageViewEvent)}e.forEach((e=\u003e{p.emit(\"\".concat(e,\"-opt-in\"))}))}catch(e){(0,l.Z)(\"An unexpected issue occurred\",e)}},h.interaction=function(){return(new y).get()};var x=y.prototype={createTracer:function(e,t){var r={},i=this,o=\"function\"==typeof t;return(0,a.p)(v+\"tracer\",[(0,s.z)(),e,r],i,n.D.spa,p),function(){if(g.emit((o?\"\":\"no-\")+\"fn-start\",[(0,s.z)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){throw g.emit(\"fn-err\",[arguments,this,e],r),e}finally{g.emit(\"fn-end\",[(0,s.z)()],r)}}}};function w(e,t,r,i){return function(){return(0,a.p)(f.xS,[\"API\/\"+t+\"\/called\"],void 0,n.D.metrics,p),i\u0026\u0026(0,a.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,p),r?void 0:this}}function A(){r.e(63).then(r.bind(r,7438)).then((t=\u003e{let{setAPI:r}=t;r(e),(0,c.L)(e,\"api\")})).catch((()=\u003e(0,l.Z)(\"Downloading runtime APIs failed...\")))}return[\"actionText\",\"setName\",\"setAttribute\",\"save\",\"ignore\",\"onEnd\",\"getContext\",\"end\",\"get\"].forEach((e=\u003e{x[e]=w(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){\"string\"==typeof e\u0026\u0026(e=new Error(e)),(0,a.p)(f.xS,[\"API\/noticeError\/called\"],void 0,n.D.metrics,p),(0,a.p)(\"err\",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,p)},u.il?(0,d.b)((()=\u003eA()),!0):A(),h}(e,y);return(0,h.Qy)(e,j,\"api\"),(0,h.Qy)(e,E,\"exposed\"),(0,h.EZ)(\"activatedFeatures\",g.T),j}},3325:(e,t,r)=\u003e{r.d(t,{D:()=\u003en,p:()=\u003ei});const n={ajax:\"ajax\",jserrors:\"jserrors\",metrics:\"metrics\",pageAction:\"page_action\",pageViewEvent:\"page_view_event\",pageViewTiming:\"page_view_timing\",sessionReplay:\"session_replay\",sessionTrace:\"session_trace\",spa:\"spa\"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return r[e](a,a.exports,i),a.exports}i.m=r,i.d=(e,t)=\u003e{for(var r in t)i.o(t,r)\u0026\u0026!i.o(e,r)\u0026\u0026Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=\u003ePromise.all(Object.keys(i.f).reduce(((t,r)=\u003e(i.f[r](e,t),t)),[])),i.u=e=\u003e({63:\"nr-full\",110:\"nr-full-compressor\",379:\"nr-full-recorder\"}[e]+\"-1.246.1.min.js\"),i.o=(e,t)=\u003eObject.prototype.hasOwnProperty.call(e,t),e={},t=\"NRBA-1.246.1.PROD:\",i.l=(r,n,a,o)=\u003e{if(e[r])e[r].push(n);else{var s,c;if(void 0!==a)for(var d=document.getElementsByTagName(\"script\"),u=0;u\u003cd.length;u++){var l=d[u];if(l.getAttribute(\"src\")==r||l.getAttribute(\"data-webpack\")==t+a){s=l;break}}s||(c=!0,(s=document.createElement(\"script\")).charset=\"utf-8\",s.timeout=120,i.nc\u0026\u0026s.setAttribute(\"nonce\",i.nc),s.setAttribute(\"data-webpack\",t+a),s.src=r),e[r]=[n];var f=(t,n)=\u003e{s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode\u0026\u0026s.parentNode.removeChild(s),i\u0026\u0026i.forEach((e=\u003ee(n))),t)return t(n)},h=setTimeout(f.bind(null,void 0,{type:\"timeout\",target:s}),12e4);s.onerror=f.bind(null,s.onerror),s.onload=f.bind(null,s.onload),c\u0026\u0026document.head.appendChild(s)}},i.r=e=\u003e{\"undefined\"!=typeof Symbol\u0026\u0026Symbol.toStringTag\u0026\u0026Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.p=\"https:\/\/js-agent.newrelic.com\/\",(()=\u003e{var e={29:0,789:0};i.f.j=(t,r)=\u003e{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise(((r,i)=\u003en=e[t]=[r,i]));r.push(n[2]=a);var o=i.p+i.u(t),s=new Error;i.l(o,(r=\u003e{if(i.o(e,t)\u0026\u0026(0!==(n=e[t])\u0026\u0026(e[t]=void 0),n)){var a=r\u0026\u0026(\"load\"===r.type?\"missing\":r.type),o=r\u0026\u0026r.target\u0026\u0026r.target.src;s.message=\"Loading chunk \"+t+\" failed.\\n(\"+a+\": \"+o+\")\",s.name=\"ChunkLoadError\",s.type=a,s.request=o,n[1](s)}}),\"chunk-\"+t,t)}};var t=(t,r)=\u003e{var n,a,[o,s,c]=r,d=0;if(o.some((t=\u003e0!==e[t]))){for(n in s)i.o(s,n)\u0026\u0026(i.m[n]=s[n]);if(c)c(i)}for(t\u0026\u0026t(r);d\u003co.length;d++)a=o[d],i.o(e,a)\u0026\u0026e[a]\u0026\u0026e[a][0](),e[a]=0},r=self[\"webpackChunk:NRBA-1.246.1.PROD\"]=self[\"webpackChunk:NRBA-1.246.1.PROD\"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=\u003e{var e=i(50);class t{addPageAction(t,r){(0,e.Z)(\"Call to agent api addPageAction failed. The page action feature is not currently initialized.\")}setPageViewName(t,r){(0,e.Z)(\"Call to agent api setPageViewName failed. The page view feature is not currently initialized.\")}setCustomAttribute(t,r,n){(0,e.Z)(\"Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.\")}noticeError(t,r){(0,e.Z)(\"Call to agent api noticeError failed. The js errors feature is not currently initialized.\")}setUserId(t){(0,e.Z)(\"Call to agent api setUserId failed. The js errors feature is not currently initialized.\")}setApplicationVersion(t){(0,e.Z)(\"Call to agent api setApplicationVersion failed. The agent is not currently initialized.\")}setErrorHandler(t){(0,e.Z)(\"Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.\")}finished(t){(0,e.Z)(\"Call to agent api finished failed. The page action feature is not currently initialized.\")}addRelease(t,r){(0,e.Z)(\"Call to agent api addRelease failed. The js errors feature is not currently initialized.\")}start(t){(0,e.Z)(\"Call to agent api addRelease failed. The agent is not currently initialized.\")}}var r=i(3325),n=i(234);const a=Object.values(r.D);function o(e){const t={};return a.forEach((r=\u003e{t[r]=function(e,t){return!1!==(0,n.Mt)(t,\"\".concat(e,\".enabled\"))}(r,e)})),t}var s=i(7530);var c=i(8e3),d=i(5938),u=i(3960),l=i(385);class f extends d.W{constructor(e,t,r){let i=!(arguments.length\u003e3\u0026\u0026void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=i,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===(0,n.Mt)(this.agentIdentifier,\"\".concat(this.featureName,\".autoStart\"))\u0026\u0026(this.auto=!1),this.auto\u0026\u0026(0,c.R)(e,r)}importAggregator(){let t=arguments.length\u003e0\u0026\u0026void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate)return;if(!this.auto)return void this.ee.on(\"\".concat(this.featureName,\"-opt-in\"),(()=\u003e{(0,c.R)(this.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator()}));const r=l.il\u0026\u0026!0===(0,n.Mt)(this.agentIdentifier,\"privacy.cookies_enabled\");let a;this.onAggregateImported=new Promise((e=\u003e{a=e}));const o=async()=\u003e{let n;try{if(r){const{setupAgentSession:e}=await i.e(63).then(i.bind(i,3228));n=e(this.agentIdentifier)}}catch(t){(0,e.Z)(\"A problem occurred when starting up session manager. This page will not start or extend any session.\",t)}try{if(!this.shouldImportAgg(this.featureName,n))return(0,c.L)(this.agentIdentifier,this.featureName),void a(!1);const{lazyFeatureLoader:e}=await i.e(63).then(i.bind(i,8582)),{Aggregate:r}=await e(this.featureName,\"aggregate\");this.featAggregate=new r(this.agentIdentifier,this.aggregator,t),a(!0)}catch(t){(0,e.Z)(\"Downloading and initializing \".concat(this.featureName,\" failed...\"),t),this.abortHandler?.(),(0,c.L)(this.agentIdentifier,this.featureName),a(!1)}};l.il?(0,u.b)((()=\u003eo()),!0):o()}shouldImportAgg(e,t){return e!==r.D.sessionReplay||!!n.Yu.MO\u0026\u0026(!1!==(0,n.Mt)(this.agentIdentifier,\"session_trace.enabled\")\u0026\u0026(!!t?.isNew||!!t?.state.sessionReplayMode))}}var h=i(7633);class p extends f{static featureName=h.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,h.t,r),this.importAggregator()}}var g=i(1117),m=i(1284);class v extends g.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var a=this.getBucket(e,t,r,i);return a.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,m.D)(e,(function(e,r){t[e]=b(r,t[e])})),t}(n,a.metrics),a}merge(e,t,r,n,i){var a=this.getBucket(e,t,n,i);if(a.metrics){var o=a.metrics;o.count+=r.count,(0,m.D)(r,(function(e,t){if(\"count\"!==e){var n=o[e],i=r[e];i\u0026\u0026!i.c?o[e]=b(i.t,n):o[e]=function(e,t){if(!t)return e;t.c||(t=y(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,o[e])}}))}else a.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=b(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n\u0026\u0026(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]\u0026\u0026this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r=\"\",n=!1,i=0;i\u003ce.length;i++)t[r=e[i]]=x(this.aggregatedData[r]),t[r].length\u0026\u0026(n=!0),delete this.aggregatedData[r];return n?t:null}}function b(e,t){return null==e?function(e){e?e.c++:e={c:1};return e}(t):t?(t.c||(t=y(t.t)),t.c+=1,t.t+=e,t.sos+=e*e,e\u003et.max\u0026\u0026(t.max=e),e\u003ct.min\u0026\u0026(t.min=e),t):{t:e}}function y(e){return{t:e,min:e,max:e,sos:e*e,c:1}}function x(e){return\"object\"!=typeof e?[]:(0,m.D)(e,w)}function w(e,t){return t}var A=i(8632),_=i(4402),E=i(4351);var T=i(5546),D=i(7956),S=i(3239),j=i(7894),C=i(9251);class P extends f{static featureName=C.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,C.t,r),l.il\u0026\u0026((0,D.N)((()=\u003e(0,T.p)(\"docHidden\",[(0,j.z)()],void 0,C.t,this.ee)),!0),(0,S.bP)(\"pagehide\",(()=\u003e(0,T.p)(\"winPagehide\",[(0,j.z)()],void 0,C.t,this.ee))),this.importAggregator())}}var O=i(3081);class R extends f{static featureName=O.t9;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,O.t9,r),this.importAggregator()}}var k=i(6660);class N{constructor(e,t,r,n){this.name=\"UncaughtError\",this.message=e,this.sourceURL=t,this.line=r,this.column=n}}class I extends f{static featureName=k.t;#e=new Set;constructor(e,t){let n=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,k.t,n);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on(\"fn-err\",((e,t,n)=\u003e{this.abortHandler\u0026\u0026!this.#e.has(n)\u0026\u0026(this.#e.add(n),(0,T.p)(\"err\",[this.#t(n),(0,j.z)()],void 0,r.D.jserrors,this.ee))})),this.ee.on(\"internal-error\",(e=\u003e{this.abortHandler\u0026\u0026(0,T.p)(\"ierr\",[this.#t(e),(0,j.z)(),!0],void 0,r.D.jserrors,this.ee)})),l._A.addEventListener(\"unhandledrejection\",(e=\u003e{this.abortHandler\u0026\u0026(0,T.p)(\"err\",[this.#r(e),(0,j.z)(),!1,{unhandledPromiseRejection:1}],void 0,r.D.jserrors,this.ee)}),(0,S.m$)(!1,this.removeOnAbort?.signal)),l._A.addEventListener(\"error\",(e=\u003e{this.abortHandler\u0026\u0026(this.#e.has(e.error)?this.#e.delete(e.error):(0,T.p)(\"err\",[this.#n(e),(0,j.z)()],void 0,r.D.jserrors,this.ee))}),(0,S.m$)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#i,this.importAggregator()}#i(){this.removeOnAbort?.abort(),this.#e.clear(),this.abortHandler=void 0}#t(e){return e instanceof Error?e:void 0!==e?.message?new N(e.message,e.filename||e.sourceURL,e.lineno||e.line,e.colno||e.col):new N(\"string\"==typeof e?e:(0,E.P)(e))}#r(e){let t=\"Unhandled Promise Rejection: \";if(e?.reason instanceof Error)try{return e.reason.message=t+e.reason.message,e.reason}catch(t){return e.reason}if(void 0===e.reason)return new N(t);const r=this.#t(e.reason);return r.message=t+r.message,r}#n(e){return e.error instanceof Error?e.error:new N(e.message,e.filename,e.lineno,e.colno)}}var z=i(2210);let H=1;const L=\"nr@id\";function M(e){const t=typeof e;return!e||\"object\"!==t\u0026\u0026\"function\"!==t?-1:e===l._A?0:(0,z.X)(e,L,(function(){return H++}))}function Z(e){if(\"string\"==typeof e\u0026\u0026e.length)return e.length;if(\"object\"==typeof e){if(\"undefined\"!=typeof ArrayBuffer\u0026\u0026e instanceof ArrayBuffer\u0026\u0026e.byteLength)return e.byteLength;if(\"undefined\"!=typeof Blob\u0026\u0026e instanceof Blob\u0026\u0026e.size)return e.size;if(!(\"undefined\"!=typeof FormData\u0026\u0026e instanceof FormData))try{return(0,E.P)(e).length}catch(e){return}}}var F=i(1214),B=i(7243);class U{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,n.DL)(this.agentIdentifier);if(!t)return null;var r=(t.accountID||\"\").toString()||null,i=(t.agentID||\"\").toString()||null,a=(t.trustKey||\"\").toString()||null;if(!r||!i)return null;var o=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),d={spanId:o,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)\u0026\u0026this.useTraceContextHeadersForCors())\u0026\u0026(d.traceContextParentHeader=this.generateTraceContextParentHeader(o,s),d.traceContextStateHeader=this.generateTraceContextStateHeader(o,c,r,i,a)),(e.sameOrigin\u0026\u0026!this.excludeNewrelicHeader()||!e.sameOrigin\u0026\u0026this.isAllowedOrigin(e)\u0026\u0026this.useNewrelicHeaderForCors())\u0026\u0026(d.newrelicHeader=this.generateTraceHeader(o,s,c,r,i,a)),d}generateTraceContextParentHeader(e,t){return\"00-\"+t+\"-\"+e+\"-01\"}generateTraceContextStateHeader(e,t,r,n,i){return i+\"@nr=0-1-\"+r+\"-\"+n+\"-\"+e+\"----\"+t}generateTraceHeader(e,t,r,n,i,a){if(!(\"function\"==typeof l._A?.btoa))return null;var o={v:[0,1],d:{ty:\"Browser\",ac:n,ap:i,id:e,tr:t,ti:r}};return a\u0026\u0026n!==a\u0026\u0026(o.d.tk=a),btoa((0,E.P)(o))}shouldGenerateTrace(e){return this.isDtEnabled()\u0026\u0026this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,n.Mt)(this.agentIdentifier,\"distributed_tracing\")\u0026\u0026(r=(0,n.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var i=0;i\u003cr.allowed_origins.length;i++){var a=(0,B.e)(r.allowed_origins[i]);if(e.hostname===a.hostname\u0026\u0026e.protocol===a.protocol\u0026\u0026e.port===a.port){t=!0;break}}return t}isDtEnabled(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!!e.enabled}excludeNewrelicHeader(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,n.Mt)(this.agentIdentifier,\"distributed_tracing\");return!!e\u0026\u0026!!e.cors_use_tracecontext_headers}}var q=i(7825),V=[\"load\",\"error\",\"abort\",\"timeout\"],G=V.length,W=n.Yu.REQ,X=n.Yu.XHR;class Q extends f{static featureName=q.t;constructor(e,t){let i=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];if(super(e,t,q.t,i),(0,n.OP)(e).xhrWrappable){this.dt=new U(e),this.handler=(e,t,r,n)=\u003e(0,T.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:\"xhr\",fetch:\"fetch\",beacon:\"beacon\"};l._A?.performance?.getEntriesByType(\"resource\").forEach((t=\u003e{if(t.initiatorType in e\u0026\u00260!==t.responseStatus){const n={status:t.responseStatus},i={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};K(n,t.name),this.handler(\"xhr\",[n,i,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,r.D.ajax)}}))}catch(e){}(0,F.u5)(this.ee),(0,F.Kf)(this.ee),function(e,t,i,a){function o(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener(\"load\",(function(r){_(t,e)}),(0,S.m$)(!1)),l.IF||e.addEventListener(\"progress\",(function(e){t.lastSize=e.loaded}),(0,S.m$)(!1))}function s(e){this.params={method:e[0]},K(this,e[1]),this.metrics={}}function c(t,r){var i=(0,n.DL)(e);i.xpid\u0026\u0026this.sameOrigin\u0026\u0026r.setRequestHeader(\"X-NewRelic-ID\",i.xpid);var o=a.generateTracePayload(this.parsedOrigin);if(o){var s=!1;o.newrelicHeader\u0026\u0026(r.setRequestHeader(\"newrelic\",o.newrelicHeader),s=!0),o.traceContextParentHeader\u0026\u0026(r.setRequestHeader(\"traceparent\",o.traceContextParentHeader),o.traceContextStateHeader\u0026\u0026r.setRequestHeader(\"tracestate\",o.traceContextStateHeader),s=!0),s\u0026\u0026(this.dt=o)}}function d(e,r){var n=this.metrics,i=e[0],a=this;if(n\u0026\u0026i){var o=Z(i);o\u0026\u0026(n.txSize=o)}this.startTime=(0,j.z)(),this.body=i,this.listener=function(e){try{\"abort\"!==e.type||a.loadCaptureCalled||(a.params.aborted=!0),(\"load\"!==e.type||a.called===a.totalCbs\u0026\u0026(a.onloadCalled||\"function\"!=typeof r.onload)\u0026\u0026\"function\"==typeof a.end)\u0026\u0026a.end(r)}catch(e){try{t.emit(\"internal-error\",[e])}catch(e){}}};for(var s=0;s\u003cG;s++)r.addEventListener(V[s],this.listener,(0,S.m$)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled\u0026\u0026\"function\"==typeof r.onload||\"function\"!=typeof this.end||this.end(r)}function f(e,t){var r=\"\"+M(e)+!!t;this.xhrGuids\u0026\u0026!this.xhrGuids[r]\u0026\u0026(this.xhrGuids[r]=!0,this.totalCbs+=1)}function h(e,t){var r=\"\"+M(e)+!!t;this.xhrGuids\u0026\u0026this.xhrGuids[r]\u0026\u0026(delete this.xhrGuids[r],this.totalCbs-=1)}function p(){this.endTime=(0,j.z)()}function g(e,r){r instanceof X\u0026\u0026\"load\"===e[0]\u0026\u0026t.emit(\"xhr-load-added\",[e[1],e[2]],r)}function m(e,r){r instanceof X\u0026\u0026\"load\"===e[0]\u0026\u0026t.emit(\"xhr-load-removed\",[e[1],e[2]],r)}function v(e,t,r){t instanceof X\u0026\u0026(\"onload\"===r\u0026\u0026(this.onload=!0),(\"load\"===(e[0]\u0026\u0026e[0].type)||this.onload)\u0026\u0026(this.xhrCbStart=(0,j.z)()))}function b(e,r){this.xhrCbStart\u0026\u0026t.emit(\"xhr-cb-time\",[(0,j.z)()-this.xhrCbStart,this.onload,r],r)}function y(e){var t,r=e[1]||{};if(\"string\"==typeof e[0]?0===(t=e[0]).length\u0026\u0026l.il\u0026\u0026(t=\"\"+l._A.location.href):e[0]\u0026\u0026e[0].url?t=e[0].url:l._A?.URL\u0026\u0026e[0]\u0026\u0026e[0]instanceof URL?t=e[0].href:\"function\"==typeof e[0].toString\u0026\u0026(t=e[0].toString()),\"string\"==typeof t\u0026\u00260!==t.length){t\u0026\u0026(this.parsedOrigin=(0,B.e)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=a.generateTracePayload(this.parsedOrigin);if(n\u0026\u0026(n.newrelicHeader||n.traceContextParentHeader))if(e[0]\u0026\u0026e[0].headers)s(e[0].headers,n)\u0026\u0026(this.dt=n);else{var i={};for(var o in r)i[o]=r[o];i.headers=new Headers(r.headers||{}),s(i.headers,n)\u0026\u0026(this.dt=n),e.length\u003e1?e[1]=i:e.push(i)}}function s(e,t){var r=!1;return t.newrelicHeader\u0026\u0026(e.set(\"newrelic\",t.newrelicHeader),r=!0),t.traceContextParentHeader\u0026\u0026(e.set(\"traceparent\",t.traceContextParentHeader),t.traceContextStateHeader\u0026\u0026e.set(\"tracestate\",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,j.z)(),this.dt=t,e.length\u003e=1\u0026\u0026(this.target=e[0]),e.length\u003e=2\u0026\u0026(this.opts=e[1]);var r,n=this.opts||{},i=this.target;\"string\"==typeof i?r=i:\"object\"==typeof i\u0026\u0026i instanceof W?r=i.url:l._A?.URL\u0026\u0026\"object\"==typeof i\u0026\u0026i instanceof URL\u0026\u0026(r=i.href),K(this,r);var a=(\"\"+(i\u0026\u0026i instanceof W\u0026\u0026i.method||n.method||\"GET\")).toUpperCase();this.params.method=a,this.body=n.body,this.txSize=Z(n.body)||0}function w(e,t){var n;this.endTime=(0,j.z)(),this.params||(this.params={}),this.params.status=t?t.status:0,\"string\"==typeof this.rxSize\u0026\u0026this.rxSize.length\u003e0\u0026\u0026(n=+this.rxSize);var a={txSize:this.txSize,rxSize:n,duration:(0,j.z)()-this.startTime};i(\"xhr\",[this.params,a,this.startTime,this.endTime,\"fetch\"],this,r.D.ajax)}function A(e){var t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var a=0;a\u003cG;a++)e.removeEventListener(V[a],this.listener,!1);t.aborted||(n.duration=(0,j.z)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status\u0026\u0026(t.status=0):_(this,e),n.cbTime=this.cbTime,i(\"xhr\",[t,n,this.startTime,this.endTime,\"xhr\"],this,r.D.ajax))}}function _(e,t){e.params.status=t.status;var r=function(e,t){var r=e.responseType;return\"json\"===r\u0026\u0026null!==t?t:\"arraybuffer\"===r||\"blob\"===r||\"json\"===r?Z(e.response):\"text\"===r||\"\"===r||void 0===r?Z(e.responseText):void 0}(t,e.lastSize);if(r\u0026\u0026(e.metrics.rxSize=r),e.sameOrigin){var n=t.getResponseHeader(\"X-NewRelic-App-Data\");n\u0026\u0026(e.params.cat=n.split(\", \").pop())}e.loadCaptureCalled=!0}t.on(\"new-xhr\",o),t.on(\"open-xhr-start\",s),t.on(\"open-xhr-end\",c),t.on(\"send-xhr-start\",d),t.on(\"xhr-cb-time\",u),t.on(\"xhr-load-added\",f),t.on(\"xhr-load-removed\",h),t.on(\"xhr-resolved\",p),t.on(\"addEventListener-end\",g),t.on(\"removeEventListener-end\",m),t.on(\"fn-end\",b),t.on(\"fetch-before-start\",y),t.on(\"fetch-start\",x),t.on(\"fn-start\",v),t.on(\"fetch-done\",w)}(e,this.ee,this.handler,this.dt),this.importAggregator()}}}function K(e,t){var r=(0,B.e)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+\":\"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Y=i(3614);const{BST_RESOURCE:J,RESOURCE:ee,START:te,END:re,FEATURE_NAME:ne,FN_END:ie,FN_START:ae,PUSH_STATE:oe}=Y;var se=i(7144);class ce extends f{static featureName=se.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,se.t,r),this.importAggregator()}}var de=i(4649);class ue extends f{static featureName=de.t;constructor(e,t){let r=!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2];super(e,t,de.t,r),this.importAggregator()}}new class extends t{constructor(t){let r=arguments.length\u003e1\u0026\u0026void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);super(),l._A?(this.agentIdentifier=r,this.sharedAggregator=new v({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(p),Object.assign(this,(0,s.j)(this.agentIdentifier,t,t.loaderType||\"agent\")),this.run()):(0,e.Z)(\"Failed to initial the agent. Could not determine the runtime environment.\")}get config(){return{info:(0,n.C5)(this.agentIdentifier),init:(0,n.P_)(this.agentIdentifier),loader_config:(0,n.DL)(this.agentIdentifier),runtime:(0,n.OP)(this.agentIdentifier)}}run(){const t=\"features\";try{const n=o(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((e,t)=\u003er.p[e.featureName]-r.p[t.featureName])),i.forEach((t=\u003e{if(n[t.featureName]||t.featureName===r.D.pageViewEvent){const i=function(e){switch(e){case r.D.ajax:return[r.D.jserrors];case r.D.sessionTrace:return[r.D.ajax,r.D.pageViewEvent];case r.D.sessionReplay:return[r.D.sessionTrace];case r.D.pageViewTiming:return[r.D.pageViewEvent];default:return[]}}(t.featureName);i.every((e=\u003en[e]))||(0,e.Z)(\"\".concat(t.featureName,\" is enabled but one or more dependent features has been disabled (\").concat((0,E.P)(i),\"). This may cause unintended consequences or missing data...\")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,A.Qy)(this.agentIdentifier,this.features,t)}catch(r){(0,e.Z)(\"Failed to initialize all enabled instrument classes (agent aborted) -\",r);for(const e in this.features)this.features[e].abortHandler?.();const n=(0,A.fP)();return delete n.initializedAgents[this.agentIdentifier]?.api,delete n.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,n.ee?.abort(),delete n.ee?.get(this.agentIdentifier),!1}}addToTrace(t){(0,e.Z)(\"Call to agent api addToTrace failed. The session trace feature is not currently initialized.\")}setCurrentRouteName(t){(0,e.Z)(\"Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.\")}interaction(){(0,e.Z)(\"Call to agent api interaction failed. The spa feature is not currently initialized.\")}}({features:[p,P,class extends f{static featureName=ne;constructor(e,t){if(super(e,t,ne,!(arguments.length\u003e2\u0026\u0026void 0!==arguments[2])||arguments[2]),!l.il)return;const n=this.ee;let i;(0,F.QU)(n),this.eventsEE=(0,F.em)(n),this.eventsEE.on(ae,(function(e,t){this.bstStart=(0,j.z)()})),this.eventsEE.on(ie,(function(e,t){(0,T.p)(\"bst\",[e[0],t,this.bstStart,(0,j.z)()],void 0,r.D.sessionTrace,n)})),n.on(oe+te,(function(e){this.time=(0,j.z)(),this.startPath=location.pathname+location.hash})),n.on(oe+re,(function(e){(0,T.p)(\"bstHist\",[location.pathname+location.hash,this.startPath,this.time],void 0,r.D.sessionTrace,n)}));try{i=new PerformanceObserver((e=\u003e{const t=e.getEntries();(0,T.p)(J,[t],void 0,r.D.sessionTrace,n)})),i.observe({type:ee,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},ce,Q,R,ue,I],loaderType:\"pro\"})})()})();\u003c\/script\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\"\u003e\n    \u003c!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --\u003e\n    \u003cmeta name=\"description\" content=\"\"\u003e\n    \u003cmeta name=\"author\" content=\"\"\u003e\n\n    \u003clink rel=\"icon\" href=\"\/favico\/syscom_favico.png\"\u003e\n\n\t\u003cscript src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.11.3\/jquery.min.js\"\u003e\u003c\/script\u003e\n\t\u003cscript type=\"text\/javascript\" src=\"https:\/\/code.jquery.com\/jquery.js\"\u003e\u003c\/script\u003e\n\t\u003cscript src=\"\/\/code.jquery.com\/ui\/1.10.4\/jquery-ui.js\"\u003e\u003c\/script\u003e\n\n\t\u003clink rel=\"stylesheet\" href=\"\/bootstrap\/css\/bootstrap.css\"\u003e\n\t\u003cscript src=\"\/bootstrap\/js\/bootstrap.min.js?v=1110\"\u003e\u003c\/script\u003e \n    \n\n    \u003ctitle\u003eProductos Info - Todo en Sistemas de Emergencia, Seguridad y Comunicación\u003c\/title\u003e\n\n    \u003c!-- Bootstrap core CSS --\u003e\n\n\t\u003cstyle\u003e\n\/*\n\t\t.footer{\n\t\t\tbackground: #1b6aa9;\n\t\t\tcolor: #fff;\n\t\t}\n*\/\n\n\t\t.footer a{\n\t\t\tcolor: #fff;\n\t\t}\n\n\t\t#tc_carrito{\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t.container_page{\n\/* \t\t\tbox-shadow: rgba(130, 130, 130, 0.43) 1px 1px 23px 1px; *\/\n\t\t\tmin-height: calc(100vh - 325px);\n\t\t\tpadding-bottom: 10px;\n\t\t}\n\t\t@media only screen and (max-width: 991px) {\n\t\t\t.container_page{\n\t\t\t\tmin-height: calc(100vh - 260px);\n\t\t\t}\n\n\t\t}\n\n\t\t@media only screen and (max-width: 480px) {\n\t\t\t#logo_desktop{\n\t\t\t\tdisplay: none!important;\n\t\t\t}\n\n\t\t\t#logo_movil{\n\t\t\t\tdisplay: block!important;\n\t\t\t}\n\t\t}\n\n\t\t@media only screen and (max-width: 700px) {\n\t\t\t#tc_carrito{\n\t\t\t\tdisplay: none!important;\n\t\t\t}\n\t\t}\n\t\u003c\/style\u003e\n\n\n\n\n\n    \u003c!-- Google Tag Manager --\u003e\n\u003cscript\u003e\n    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'\u0026l='+l:'';j.async=true;j.src='https:\/\/www.googletagmanager.com\/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-MBBK4NC');\n\u003c\/script\u003e\u003c!-- End Google Tag Manager --\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cscript\u003e\nfunction es_app(){\nreturn \u003cbr \/\u003e\n\u003cb\u003eNotice\u003c\/b\u003e:  Undefined index: HTTP_USER_AGENT in \u003cb\u003e\/var\/www\/websites\/syscom.mx\/app\/webroot\/syscomv6\/class\/pagina_consola.php\u003c\/b\u003e on line \u003cb\u003e401\u003c\/b\u003e\u003cbr \/\u003e\nfalse}\n\u003c\/script\u003e\n \u003cscript\u003e\n\n\n\tfunction buscador_productos(){\n\t\tbusqueda=$(\"#input_buscador\").val();\n\n\t\twindow.location.href=\"\/principal\/consultarproductosazul?global_search=\"+busqueda;\n\t}\n\n\tfunction detectar_tecla(evento){\n\t\tif(window.event){ \/\/ IE\n\t        keynum = evento.keyCode;\n\t    }else if(e.which){  \/\/ Netscape\/Firefox\/Opera\n\t        keynum = evento.which;\n\t    }\n\t\tif(keynum==13){\n\t\t\tbuscador_productos();\n\t\t}\n\t}\n\n \u003c\/script\u003e\n\n  \n\n  \n\n    \u003c!-- Fixed navbar --\u003e\n\n\n\n\n\t\n\t\t\u003cmeta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"\u003e\n\t\n\t\t\u003clink rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css?family=Open+Sans\u0026amp;?v=3.07\"\u003e\n\t\t\u003clink rel=\"stylesheet\" href=\"\/css\/jquery.fancybox.css?v=3.07\"\u003e\n\t\t\n\t\t\u003cscript\u003e\/*!\n  * Bootstrap v5.3.0 (https:\/\/getbootstrap.com\/)\n  * Copyright 2011-2023 The Bootstrap Authors (https:\/\/github.com\/twbs\/bootstrap\/graphs\/contributors)\n  * Licensed under MIT (https:\/\/github.com\/twbs\/bootstrap\/blob\/main\/LICENSE)\n  *\/\n!function(t,e){\"object\"==typeof exports\u0026\u0026\"undefined\"!=typeof module?module.exports=e(require(\"@popperjs\/core\")):\"function\"==typeof define\u0026\u0026define.amd?define([\"@popperjs\/core\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){\"use strict\";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:\"Module\"}});if(t)for(const s in t)if(\"default\"!==s){const i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:()=\u003et[s]})}return e.default=t,Object.freeze(e)}const s=e(t),i=new Map,n={set(t,e,s){i.has(t)||i.set(t,new Map);const n=i.get(t);n.has(e)||0===n.size?n.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=\u003ei.has(t)\u0026\u0026i.get(t).get(e)||null,remove(t,e){if(!i.has(t))return;const s=i.get(t);s.delete(e),0===s.size\u0026\u0026i.delete(t)}},o=\"transitionend\",r=t=\u003e(t\u0026\u0026window.CSS\u0026\u0026window.CSS.escape\u0026\u0026(t=t.replace(\/#([^\\s\"#']+)\/g,((t,e)=\u003e`#${CSS.escape(e)}`))),t),a=t=\u003e{t.dispatchEvent(new Event(o))},l=t=\u003e!(!t||\"object\"!=typeof t)\u0026\u0026(void 0!==t.jquery\u0026\u0026(t=t[0]),void 0!==t.nodeType),c=t=\u003el(t)?t.jquery?t[0]:t:\"string\"==typeof t\u0026\u0026t.length\u003e0?document.querySelector(r(t)):null,h=t=\u003e{if(!l(t)||0===t.getClientRects().length)return!1;const e=\"visible\"===getComputedStyle(t).getPropertyValue(\"visibility\"),s=t.closest(\"details:not([open])\");if(!s)return e;if(s!==t){const e=t.closest(\"summary\");if(e\u0026\u0026e.parentNode!==s)return!1;if(null===e)return!1}return e},d=t=\u003e!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains(\"disabled\")||(void 0!==t.disabled?t.disabled:t.hasAttribute(\"disabled\")\u0026\u0026\"false\"!==t.getAttribute(\"disabled\")),u=t=\u003e{if(!document.documentElement.attachShadow)return null;if(\"function\"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?u(t.parentNode):null},_=()=\u003e{},g=t=\u003e{t.offsetHeight},f=()=\u003ewindow.jQuery\u0026\u0026!document.body.hasAttribute(\"data-bs-no-jquery\")?window.jQuery:null,m=[],p=()=\u003e\"rtl\"===document.documentElement.dir,b=t=\u003e{var e;e=()=\u003e{const e=f();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=\u003e(e.fn[s]=i,t.jQueryInterface)}},\"loading\"===document.readyState?(m.length||document.addEventListener(\"DOMContentLoaded\",(()=\u003e{for(const t of m)t()})),m.push(e)):e()},v=(t,e=[],s=t)=\u003e\"function\"==typeof t?t(...e):s,y=(t,e,s=!0)=\u003e{if(!s)return void v(t);const i=(t=\u003e{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(\",\")[0],s=s.split(\",\")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const r=({target:s})=\u003e{s===e\u0026\u0026(n=!0,e.removeEventListener(o,r),v(t))};e.addEventListener(o,r),setTimeout((()=\u003e{n||a(e)}),i)},w=(t,e,s,i)=\u003e{const n=t.length;let o=t.indexOf(e);return-1===o?!s\u0026\u0026i?t[n-1]:t[0]:(o+=s?1:-1,i\u0026\u0026(o=(o+n)%n),t[Math.max(0,Math.min(o,n-1))])},A=\/[^.]*(?=\\..*)\\.|.*\/,E=\/\\..*\/,C=\/::\\d+$\/,T={};let k=1;const S={mouseenter:\"mouseover\",mouseleave:\"mouseout\"},L=new Set([\"click\",\"dblclick\",\"mouseup\",\"mousedown\",\"contextmenu\",\"mousewheel\",\"DOMMouseScroll\",\"mouseover\",\"mouseout\",\"mousemove\",\"selectstart\",\"selectend\",\"keydown\",\"keypress\",\"keyup\",\"orientationchange\",\"touchstart\",\"touchmove\",\"touchend\",\"touchcancel\",\"pointerdown\",\"pointermove\",\"pointerup\",\"pointerleave\",\"pointercancel\",\"gesturestart\",\"gesturechange\",\"gestureend\",\"focus\",\"blur\",\"change\",\"reset\",\"select\",\"submit\",\"focusin\",\"focusout\",\"load\",\"unload\",\"beforeunload\",\"resize\",\"move\",\"DOMContentLoaded\",\"readystatechange\",\"error\",\"abort\",\"scroll\"]);function O(t,e){return e\u0026\u0026`${e}::${k++}`||t.uidEvent||k++}function I(t){const e=O(t);return t.uidEvent=e,T[e]=T[e]||{},T[e]}function D(t,e,s=null){return Object.values(t).find((t=\u003et.callable===e\u0026\u0026t.delegationSelector===s))}function N(t,e,s){const i=\"string\"==typeof e,n=i?s:e||s;let o=j(t);return L.has(o)||(o=t),[i,n,o]}function P(t,e,s,i,n){if(\"string\"!=typeof e||!t)return;let[o,r,a]=N(e,s,i);if(e in S){const t=t=\u003efunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget\u0026\u0026!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=I(t),c=l[a]||(l[a]={}),h=D(c,r,o?s:null);if(h)return void(h.oneOff=h.oneOff\u0026\u0026n);const d=O(r,e.replace(A,\"\")),u=o?function(t,e,s){return function i(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r\u0026\u0026r!==this;r=r.parentNode)for(const a of o)if(a===r)return $(n,{delegateTarget:r}),i.oneOff\u0026\u0026F.off(t,n.type,e,s),s.apply(r,[n])}}(t,s,r):function(t,e){return function s(i){return $(i,{delegateTarget:t}),s.oneOff\u0026\u0026F.off(t,i.type,e),e.apply(t,[i])}}(t,r);u.delegationSelector=o?s:null,u.callable=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function x(t,e,s,i,n){const o=D(e[s],i,n);o\u0026\u0026(t.removeEventListener(s,o,Boolean(n)),delete e[s][o.uidEvent])}function M(t,e,s,i){const n=e[s]||{};for(const[o,r]of Object.entries(n))o.includes(i)\u0026\u0026x(t,e,s,r.callable,r.delegationSelector)}function j(t){return t=t.replace(E,\"\"),S[t]||t}const F={on(t,e,s,i){P(t,e,s,i,!1)},one(t,e,s,i){P(t,e,s,i,!0)},off(t,e,s,i){if(\"string\"!=typeof e||!t)return;const[n,o,r]=N(e,s,i),a=r!==e,l=I(t),c=l[r]||{},h=e.startsWith(\".\");if(void 0===o){if(h)for(const s of Object.keys(l))M(t,l,s,e.slice(1));for(const[s,i]of Object.entries(c)){const n=s.replace(C,\"\");a\u0026\u0026!e.includes(n)||x(t,l,r,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;x(t,l,r,o,n?s:null)}},trigger(t,e,s){if(\"string\"!=typeof e||!t)return null;const i=f();let n=null,o=!0,r=!0,a=!1;e!==j(e)\u0026\u0026i\u0026\u0026(n=i.Event(e,s),i(t).trigger(n),o=!n.isPropagationStopped(),r=!n.isImmediatePropagationStopped(),a=n.isDefaultPrevented());const l=$(new Event(e,{bubbles:o,cancelable:!0}),s);return a\u0026\u0026l.preventDefault(),r\u0026\u0026t.dispatchEvent(l),l.defaultPrevented\u0026\u0026n\u0026\u0026n.preventDefault(),l}};function $(t,e={}){for(const[s,i]of Object.entries(e))try{t[s]=i}catch(e){Object.defineProperty(t,s,{configurable:!0,get:()=\u003ei})}return t}function z(t){if(\"true\"===t)return!0;if(\"false\"===t)return!1;if(t===Number(t).toString())return Number(t);if(\"\"===t||\"null\"===t)return null;if(\"string\"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function H(t){return t.replace(\/[A-Z]\/g,(t=\u003e`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,s){t.setAttribute(`data-bs-${H(e)}`,s)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${H(e)}`)},getDataAttributes(t){if(!t)return{};const e={},s=Object.keys(t.dataset).filter((t=\u003et.startsWith(\"bs\")\u0026\u0026!t.startsWith(\"bsConfig\")));for(const i of s){let s=i.replace(\/^bs\/,\"\");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=z(t.dataset[i])}return e},getDataAttribute:(t,e)=\u003ez(t.getAttribute(`data-bs-${H(e)}`))};class q{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method \"NAME\", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const s=l(e)?B.getDataAttribute(e,\"config\"):{};return{...this.constructor.Default,...\"object\"==typeof s?s:{},...l(e)?B.getDataAttributes(e):{},...\"object\"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const e=t[i],o=l(e)?\"element\":null==(s=e)?`${s}`:Object.prototype.toString.call(s).match(\/\\s([a-z]+)\/i)[1].toLowerCase();if(!new RegExp(n).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${i}\" provided type \"${o}\" but expected type \"${n}\".`)}var s}}class W extends q{constructor(t,e){super(),(t=c(t))\u0026\u0026(this._element=t,this._config=this._getConfig(e),n.set(this._element,this.constructor.DATA_KEY,this))}dispose(){n.remove(this._element,this.constructor.DATA_KEY),F.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,s=!0){y(t,e,s)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return n.get(c(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,\"object\"==typeof e?e:null)}static get VERSION(){return\"5.3.0\"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const R=t=\u003e{let e=t.getAttribute(\"data-bs-target\");if(!e||\"#\"===e){let s=t.getAttribute(\"href\");if(!s||!s.includes(\"#\")\u0026\u0026!s.startsWith(\".\"))return null;s.includes(\"#\")\u0026\u0026!s.startsWith(\"#\")\u0026\u0026(s=`#${s.split(\"#\")[1]}`),e=s\u0026\u0026\"#\"!==s?s.trim():null}return r(e)},K={find:(t,e=document.documentElement)=\u003e[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=\u003eElement.prototype.querySelector.call(e,t),children:(t,e)=\u003e[].concat(...t.children).filter((t=\u003et.matches(e))),parents(t,e){const s=[];let i=t.parentNode.closest(e);for(;i;)s.push(i),i=i.parentNode.closest(e);return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]},focusableChildren(t){const e=[\"a\",\"button\",\"input\",\"textarea\",\"select\",\"details\",\"[tabindex]\",'[contenteditable=\"true\"]'].map((t=\u003e`${t}:not([tabindex^=\"-\"])`)).join(\",\");return this.find(e,t).filter((t=\u003e!d(t)\u0026\u0026h(t)))},getSelectorFromElement(t){const e=R(t);return e\u0026\u0026K.findOne(e)?e:null},getElementFromSelector(t){const e=R(t);return e?K.findOne(e):null},getMultipleElementsFromSelector(t){const e=R(t);return e?K.find(e):[]}},V=(t,e=\"hide\")=\u003e{const s=`click.dismiss${t.EVENT_KEY}`,i=t.NAME;F.on(document,s,`[data-bs-dismiss=\"${i}\"]`,(function(s){if([\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026s.preventDefault(),d(this))return;const n=K.getElementFromSelector(this)||this.closest(`.${i}`);t.getOrCreateInstance(n)[e]()}))};class Q extends W{static get NAME(){return\"alert\"}close(){if(F.trigger(this._element,\"close.bs.alert\").defaultPrevented)return;this._element.classList.remove(\"show\");const t=this._element.classList.contains(\"fade\");this._queueCallback((()=\u003ethis._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),F.trigger(this._element,\"closed.bs.alert\"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}V(Q,\"close\"),b(Q);const X='[data-bs-toggle=\"button\"]';class Y extends W{static get NAME(){return\"button\"}toggle(){this._element.setAttribute(\"aria-pressed\",this._element.classList.toggle(\"active\"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);\"toggle\"===t\u0026\u0026e[t]()}))}}F.on(document,\"click.bs.button.data-api\",X,(t=\u003e{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),b(Y);const U={endCallback:null,leftCallback:null,rightCallback:null},G={endCallback:\"(function|null)\",leftCallback:\"(function|null)\",rightCallback:\"(function|null)\"};class J extends q{constructor(t,e){super(),this._element=t,t\u0026\u0026J.isSupported()\u0026\u0026(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return U}static get DefaultType(){return G}static get NAME(){return\"swipe\"}dispose(){F.off(this._element,\".bs.swipe\")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)\u0026\u0026(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)\u0026\u0026(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),v(this._config.endCallback)}_move(t){this._deltaX=t.touches\u0026\u0026t.touches.length\u003e1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t\u003c=40)return;const e=t\/this._deltaX;this._deltaX=0,e\u0026\u0026v(e\u003e0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(F.on(this._element,\"pointerdown.bs.swipe\",(t=\u003ethis._start(t))),F.on(this._element,\"pointerup.bs.swipe\",(t=\u003ethis._end(t))),this._element.classList.add(\"pointer-event\")):(F.on(this._element,\"touchstart.bs.swipe\",(t=\u003ethis._start(t))),F.on(this._element,\"touchmove.bs.swipe\",(t=\u003ethis._move(t))),F.on(this._element,\"touchend.bs.swipe\",(t=\u003ethis._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents\u0026\u0026(\"pen\"===t.pointerType||\"touch\"===t.pointerType)}static isSupported(){return\"ontouchstart\"in document.documentElement||navigator.maxTouchPoints\u003e0}}const Z=\"next\",tt=\"prev\",et=\"left\",st=\"right\",it=\"slid.bs.carousel\",nt=\"carousel\",ot=\"active\",rt={ArrowLeft:st,ArrowRight:et},at={interval:5e3,keyboard:!0,pause:\"hover\",ride:!1,touch:!0,wrap:!0},lt={interval:\"(number|boolean)\",keyboard:\"boolean\",pause:\"(string|boolean)\",ride:\"(boolean|string)\",touch:\"boolean\",wrap:\"boolean\"};class ct extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=K.findOne(\".carousel-indicators\",this._element),this._addEventListeners(),this._config.ride===nt\u0026\u0026this.cycle()}static get Default(){return at}static get DefaultType(){return lt}static get NAME(){return\"carousel\"}next(){this._slide(Z)}nextWhenVisible(){!document.hidden\u0026\u0026h(this._element)\u0026\u0026this.next()}prev(){this._slide(tt)}pause(){this._isSliding\u0026\u0026a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=\u003ethis.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride\u0026\u0026(this._isSliding?F.one(this._element,it,(()=\u003ethis.cycle())):this.cycle())}to(t){const e=this._getItems();if(t\u003ee.length-1||t\u003c0)return;if(this._isSliding)return void F.one(this._element,it,(()=\u003ethis.to(t)));const s=this._getItemIndex(this._getActive());if(s===t)return;const i=t\u003es?Z:tt;this._slide(i,e[t])}dispose(){this._swipeHelper\u0026\u0026this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard\u0026\u0026F.on(this._element,\"keydown.bs.carousel\",(t=\u003ethis._keydown(t))),\"hover\"===this._config.pause\u0026\u0026(F.on(this._element,\"mouseenter.bs.carousel\",(()=\u003ethis.pause())),F.on(this._element,\"mouseleave.bs.carousel\",(()=\u003ethis._maybeEnableCycle()))),this._config.touch\u0026\u0026J.isSupported()\u0026\u0026this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of K.find(\".carousel-item img\",this._element))F.on(t,\"dragstart.bs.carousel\",(t=\u003et.preventDefault()));const t={leftCallback:()=\u003ethis._slide(this._directionToOrder(et)),rightCallback:()=\u003ethis._slide(this._directionToOrder(st)),endCallback:()=\u003e{\"hover\"===this._config.pause\u0026\u0026(this.pause(),this.touchTimeout\u0026\u0026clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=\u003ethis._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new J(this._element,t)}_keydown(t){if(\/input|textarea\/i.test(t.target.tagName))return;const e=rt[t.key];e\u0026\u0026(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=K.findOne(\".active\",this._indicatorsElement);e.classList.remove(ot),e.removeAttribute(\"aria-current\");const s=K.findOne(`[data-bs-slide-to=\"${t}\"]`,this._indicatorsElement);s\u0026\u0026(s.classList.add(ot),s.setAttribute(\"aria-current\",\"true\"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute(\"data-bs-interval\"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const s=this._getActive(),i=t===Z,n=e||w(this._getItems(),s,i,this._config.wrap);if(n===s)return;const o=this._getItemIndex(n),r=e=\u003eF.trigger(this._element,e,{relatedTarget:n,direction:this._orderToDirection(t),from:this._getItemIndex(s),to:o});if(r(\"slide.bs.carousel\").defaultPrevented)return;if(!s||!n)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=n;const l=i?\"carousel-item-start\":\"carousel-item-end\",c=i?\"carousel-item-next\":\"carousel-item-prev\";n.classList.add(c),g(n),s.classList.add(l),n.classList.add(l),this._queueCallback((()=\u003e{n.classList.remove(l,c),n.classList.add(ot),s.classList.remove(ot,c,l),this._isSliding=!1,r(it)}),s,this._isAnimated()),a\u0026\u0026this.cycle()}_isAnimated(){return this._element.classList.contains(\"slide\")}_getActive(){return K.findOne(\".active.carousel-item\",this._element)}_getItems(){return K.find(\".carousel-item\",this._element)}_clearInterval(){this._interval\u0026\u0026(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===et?tt:Z:t===et?Z:tt}_orderToDirection(t){return p()?t===tt?et:st:t===tt?st:et}static jQueryInterface(t){return this.each((function(){const e=ct.getOrCreateInstance(this,t);if(\"number\"!=typeof t){if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}else e.to(t)}))}}F.on(document,\"click.bs.carousel.data-api\",\"[data-bs-slide], [data-bs-slide-to]\",(function(t){const e=K.getElementFromSelector(this);if(!e||!e.classList.contains(nt))return;t.preventDefault();const s=ct.getOrCreateInstance(e),i=this.getAttribute(\"data-bs-slide-to\");return i?(s.to(i),void s._maybeEnableCycle()):\"next\"===B.getDataAttribute(this,\"slide\")?(s.next(),void s._maybeEnableCycle()):(s.prev(),void s._maybeEnableCycle())})),F.on(window,\"load.bs.carousel.data-api\",(()=\u003e{const t=K.find('[data-bs-ride=\"carousel\"]');for(const e of t)ct.getOrCreateInstance(e)})),b(ct);const ht=\"show\",dt=\"collapse\",ut=\"collapsing\",_t='[data-bs-toggle=\"collapse\"]',gt={parent:null,toggle:!0},ft={parent:\"(null|element)\",toggle:\"boolean\"};class mt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const s=K.find(_t);for(const t of s){const e=K.getSelectorFromElement(t),s=K.find(e).filter((t=\u003et===this._element));null!==e\u0026\u0026s.length\u0026\u0026this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle\u0026\u0026this.toggle()}static get Default(){return gt}static get DefaultType(){return ft}static get NAME(){return\"collapse\"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent\u0026\u0026(t=this._getFirstLevelChildren(\".collapse.show, .collapse.collapsing\").filter((t=\u003et!==this._element)).map((t=\u003emt.getOrCreateInstance(t,{toggle:!1})))),t.length\u0026\u0026t[0]._isTransitioning)return;if(F.trigger(this._element,\"show.bs.collapse\").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(dt),this._element.classList.add(ut),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=\u003e{this._isTransitioning=!1,this._element.classList.remove(ut),this._element.classList.add(dt,ht),this._element.style[e]=\"\",F.trigger(this._element,\"shown.bs.collapse\")}),this._element,!0),this._element.style[e]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(F.trigger(this._element,\"hide.bs.collapse\").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,g(this._element),this._element.classList.add(ut),this._element.classList.remove(dt,ht);for(const t of this._triggerArray){const e=K.getElementFromSelector(t);e\u0026\u0026!this._isShown(e)\u0026\u0026this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]=\"\",this._queueCallback((()=\u003e{this._isTransitioning=!1,this._element.classList.remove(ut),this._element.classList.add(dt),F.trigger(this._element,\"hidden.bs.collapse\")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ht)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=c(t.parent),t}_getDimension(){return this._element.classList.contains(\"collapse-horizontal\")?\"width\":\"height\"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(_t);for(const e of t){const t=K.getElementFromSelector(e);t\u0026\u0026this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=K.find(\":scope .collapse .collapse\",this._config.parent);return K.find(t,this._config.parent).filter((t=\u003e!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const s of t)s.classList.toggle(\"collapsed\",!e),s.setAttribute(\"aria-expanded\",e)}static jQueryInterface(t){const e={};return\"string\"==typeof t\u0026\u0026\/show|hide\/.test(t)\u0026\u0026(e.toggle=!1),this.each((function(){const s=mt.getOrCreateInstance(this,e);if(\"string\"==typeof t){if(void 0===s[t])throw new TypeError(`No method named \"${t}\"`);s[t]()}}))}}F.on(document,\"click.bs.collapse.data-api\",_t,(function(t){(\"A\"===t.target.tagName||t.delegateTarget\u0026\u0026\"A\"===t.delegateTarget.tagName)\u0026\u0026t.preventDefault();for(const t of K.getMultipleElementsFromSelector(this))mt.getOrCreateInstance(t,{toggle:!1}).toggle()})),b(mt);const pt=\"dropdown\",bt=\"ArrowUp\",vt=\"ArrowDown\",yt=\"click.bs.dropdown.data-api\",wt=\"keydown.bs.dropdown.data-api\",At=\"show\",Et='[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)',Ct=`${Et}.show`,Tt=\".dropdown-menu\",kt=p()?\"top-end\":\"top-start\",St=p()?\"top-start\":\"top-end\",Lt=p()?\"bottom-end\":\"bottom-start\",Ot=p()?\"bottom-start\":\"bottom-end\",It=p()?\"left-start\":\"right-start\",Dt=p()?\"right-start\":\"left-start\",Nt={autoClose:!0,boundary:\"clippingParents\",display:\"dynamic\",offset:[0,2],popperConfig:null,reference:\"toggle\"},Pt={autoClose:\"(boolean|string)\",boundary:\"(string|element)\",display:\"string\",offset:\"(array|string|function)\",popperConfig:\"(null|object|function)\",reference:\"(string|element|object)\"};class xt extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=K.next(this._element,Tt)[0]||K.prev(this._element,Tt)[0]||K.findOne(Tt,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Nt}static get DefaultType(){return Pt}static get NAME(){return pt}toggle(){return this._isShown()?this.hide():this.show()}show(){if(d(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!F.trigger(this._element,\"show.bs.dropdown\",t).defaultPrevented){if(this._createPopper(),\"ontouchstart\"in document.documentElement\u0026\u0026!this._parent.closest(\".navbar-nav\"))for(const t of[].concat(...document.body.children))F.on(t,\"mouseover\",_);this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),this._menu.classList.add(At),this._element.classList.add(At),F.trigger(this._element,\"shown.bs.dropdown\",t)}}hide(){if(d(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper\u0026\u0026this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper\u0026\u0026this._popper.update()}_completeHide(t){if(!F.trigger(this._element,\"hide.bs.dropdown\",t).defaultPrevented){if(\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))F.off(t,\"mouseover\",_);this._popper\u0026\u0026this._popper.destroy(),this._menu.classList.remove(At),this._element.classList.remove(At),this._element.setAttribute(\"aria-expanded\",\"false\"),B.removeDataAttribute(this._menu,\"popper\"),F.trigger(this._element,\"hidden.bs.dropdown\",t)}}_getConfig(t){if(\"object\"==typeof(t=super._getConfig(t)).reference\u0026\u0026!l(t.reference)\u0026\u0026\"function\"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${pt.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);return t}_createPopper(){if(void 0===s)throw new TypeError(\"Bootstrap's dropdowns require Popper (https:\/\/popper.js.org)\");let t=this._element;\"parent\"===this._config.reference?t=this._parent:l(this._config.reference)?t=c(this._config.reference):\"object\"==typeof this._config.reference\u0026\u0026(t=this._config.reference);const e=this._getPopperConfig();this._popper=s.createPopper(t,this._menu,e)}_isShown(){return this._menu.classList.contains(At)}_getPlacement(){const t=this._parent;if(t.classList.contains(\"dropend\"))return It;if(t.classList.contains(\"dropstart\"))return Dt;if(t.classList.contains(\"dropup-center\"))return\"top\";if(t.classList.contains(\"dropdown-center\"))return\"bottom\";const e=\"end\"===getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim();return t.classList.contains(\"dropup\")?e?St:kt:e?Ot:Lt}_detectNavbar(){return null!==this._element.closest(\".navbar\")}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map((t=\u003eNumber.parseInt(t,10))):\"function\"==typeof t?e=\u003et(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"offset\",options:{offset:this._getOffset()}}]};return(this._inNavbar||\"static\"===this._config.display)\u0026\u0026(B.setDataAttribute(this._menu,\"popper\",\"static\"),t.modifiers=[{name:\"applyStyles\",enabled:!1}]),{...t,...v(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const s=K.find(\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",this._menu).filter((t=\u003eh(t)));s.length\u0026\u0026w(s,e,t===vt,!s.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}static clearMenus(t){if(2===t.button||\"keyup\"===t.type\u0026\u0026\"Tab\"!==t.key)return;const e=K.find(Ct);for(const s of e){const e=xt.getInstance(s);if(!e||!1===e._config.autoClose)continue;const i=t.composedPath(),n=i.includes(e._menu);if(i.includes(e._element)||\"inside\"===e._config.autoClose\u0026\u0026!n||\"outside\"===e._config.autoClose\u0026\u0026n)continue;if(e._menu.contains(t.target)\u0026\u0026(\"keyup\"===t.type\u0026\u0026\"Tab\"===t.key||\/input|select|option|textarea|form\/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};\"click\"===t.type\u0026\u0026(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=\/input|textarea\/i.test(t.target.tagName),s=\"Escape\"===t.key,i=[bt,vt].includes(t.key);if(!i\u0026\u0026!s)return;if(e\u0026\u0026!s)return;t.preventDefault();const n=this.matches(Et)?this:K.prev(this,Et)[0]||K.next(this,Et)[0]||K.findOne(Et,t.delegateTarget.parentNode),o=xt.getOrCreateInstance(n);if(i)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()\u0026\u0026(t.stopPropagation(),o.hide(),n.focus())}}F.on(document,wt,Et,xt.dataApiKeydownHandler),F.on(document,wt,Tt,xt.dataApiKeydownHandler),F.on(document,yt,xt.clearMenus),F.on(document,\"keyup.bs.dropdown.data-api\",xt.clearMenus),F.on(document,yt,Et,(function(t){t.preventDefault(),xt.getOrCreateInstance(this).toggle()})),b(xt);const Mt=\"show\",jt=\"mousedown.bs.backdrop\",Ft={className:\"modal-backdrop\",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:\"body\"},$t={className:\"string\",clickCallback:\"(function|null)\",isAnimated:\"boolean\",isVisible:\"boolean\",rootElement:\"(element|string)\"};class zt extends q{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Ft}static get DefaultType(){return $t}static get NAME(){return\"backdrop\"}show(t){if(!this._config.isVisible)return void v(t);this._append();const e=this._getElement();this._config.isAnimated\u0026\u0026g(e),e.classList.add(Mt),this._emulateAnimation((()=\u003e{v(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Mt),this._emulateAnimation((()=\u003e{this.dispose(),v(t)}))):v(t)}dispose(){this._isAppended\u0026\u0026(F.off(this._element,jt),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement(\"div\");t.className=this._config.className,this._config.isAnimated\u0026\u0026t.classList.add(\"fade\"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=c(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),F.on(t,jt,(()=\u003e{v(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){y(t,this._getElement(),this._config.isAnimated)}}const Ht=\".bs.focustrap\",Bt=\"backward\",qt={autofocus:!0,trapElement:null},Wt={autofocus:\"boolean\",trapElement:\"element\"};class Rt extends q{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return qt}static get DefaultType(){return Wt}static get NAME(){return\"focustrap\"}activate(){this._isActive||(this._config.autofocus\u0026\u0026this._config.trapElement.focus(),F.off(document,Ht),F.on(document,\"focusin.bs.focustrap\",(t=\u003ethis._handleFocusin(t))),F.on(document,\"keydown.tab.bs.focustrap\",(t=\u003ethis._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive\u0026\u0026(this._isActive=!1,F.off(document,Ht))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const s=K.focusableChildren(e);0===s.length?e.focus():this._lastTabNavDirection===Bt?s[s.length-1].focus():s[0].focus()}_handleKeydown(t){\"Tab\"===t.key\u0026\u0026(this._lastTabNavDirection=t.shiftKey?Bt:\"forward\")}}const Kt=\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",Vt=\".sticky-top\",Qt=\"padding-right\",Xt=\"margin-right\";class Yt{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Qt,(e=\u003ee+t)),this._setElementAttributes(Kt,Qt,(e=\u003ee+t)),this._setElementAttributes(Vt,Xt,(e=\u003ee-t))}reset(){this._resetElementAttributes(this._element,\"overflow\"),this._resetElementAttributes(this._element,Qt),this._resetElementAttributes(Kt,Qt),this._resetElementAttributes(Vt,Xt)}isOverflowing(){return this.getWidth()\u003e0}_disableOverFlow(){this._saveInitialAttribute(this._element,\"overflow\"),this._element.style.overflow=\"hidden\"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,(t=\u003e{if(t!==this._element\u0026\u0026window.innerWidth\u003et.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${s(Number.parseFloat(n))}px`)}))}_saveInitialAttribute(t,e){const s=t.style.getPropertyValue(e);s\u0026\u0026B.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=\u003e{const s=B.getDataAttribute(t,e);null!==s?(B.removeDataAttribute(t,e),t.style.setProperty(e,s)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(l(t))e(t);else for(const s of K.find(t,this._element))e(s)}}const Ut=\".bs.modal\",Gt=\"hidden.bs.modal\",Jt=\"show.bs.modal\",Zt=\"modal-open\",te=\"show\",ee=\"modal-static\",se={backdrop:!0,focus:!0,keyboard:!0},ie={backdrop:\"(boolean|string)\",focus:\"boolean\",keyboard:\"boolean\"};class ne extends W{constructor(t,e){super(t,e),this._dialog=K.findOne(\".modal-dialog\",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Yt,this._addEventListeners()}static get Default(){return se}static get DefaultType(){return ie}static get NAME(){return\"modal\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||F.trigger(this._element,Jt,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Zt),this._adjustDialog(),this._backdrop.show((()=\u003ethis._showElement(t))))}hide(){this._isShown\u0026\u0026!this._isTransitioning\u0026\u0026(F.trigger(this._element,\"hide.bs.modal\").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(te),this._queueCallback((()=\u003ethis._hideModal()),this._element,this._isAnimated())))}dispose(){F.off(window,Ut),F.off(this._dialog,Ut),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new zt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Rt({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.scrollTop=0;const e=K.findOne(\".modal-body\",this._dialog);e\u0026\u0026(e.scrollTop=0),g(this._element),this._element.classList.add(te),this._queueCallback((()=\u003e{this._config.focus\u0026\u0026this._focustrap.activate(),this._isTransitioning=!1,F.trigger(this._element,\"shown.bs.modal\",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){F.on(this._element,\"keydown.dismiss.bs.modal\",(t=\u003e{\"Escape\"===t.key\u0026\u0026(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),F.on(window,\"resize.bs.modal\",(()=\u003e{this._isShown\u0026\u0026!this._isTransitioning\u0026\u0026this._adjustDialog()})),F.on(this._element,\"mousedown.dismiss.bs.modal\",(t=\u003e{F.one(this._element,\"click.dismiss.bs.modal\",(e=\u003e{this._element===t.target\u0026\u0026this._element===e.target\u0026\u0026(\"static\"!==this._config.backdrop?this._config.backdrop\u0026\u0026this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._isTransitioning=!1,this._backdrop.hide((()=\u003e{document.body.classList.remove(Zt),this._resetAdjustments(),this._scrollBar.reset(),F.trigger(this._element,Gt)}))}_isAnimated(){return this._element.classList.contains(\"fade\")}_triggerBackdropTransition(){if(F.trigger(this._element,\"hidePrevented.bs.modal\").defaultPrevented)return;const t=this._element.scrollHeight\u003edocument.documentElement.clientHeight,e=this._element.style.overflowY;\"hidden\"===e||this._element.classList.contains(ee)||(t||(this._element.style.overflowY=\"hidden\"),this._element.classList.add(ee),this._queueCallback((()=\u003e{this._element.classList.remove(ee),this._queueCallback((()=\u003e{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight\u003edocument.documentElement.clientHeight,e=this._scrollBar.getWidth(),s=e\u003e0;if(s\u0026\u0026!t){const t=p()?\"paddingLeft\":\"paddingRight\";this._element.style[t]=`${e}px`}if(!s\u0026\u0026t){const t=p()?\"paddingRight\":\"paddingLeft\";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"}static jQueryInterface(t,e){return this.each((function(){const s=ne.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===s[t])throw new TypeError(`No method named \"${t}\"`);s[t](e)}}))}}F.on(document,\"click.bs.modal.data-api\",'[data-bs-toggle=\"modal\"]',(function(t){const e=K.getElementFromSelector(this);[\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026t.preventDefault(),F.one(e,Jt,(t=\u003e{t.defaultPrevented||F.one(e,Gt,(()=\u003e{h(this)\u0026\u0026this.focus()}))}));const s=K.findOne(\".modal.show\");s\u0026\u0026ne.getInstance(s).hide(),ne.getOrCreateInstance(e).toggle(this)})),V(ne),b(ne);const oe=\"show\",re=\"showing\",ae=\"hiding\",le=\".offcanvas.show\",ce=\"hidePrevented.bs.offcanvas\",he=\"hidden.bs.offcanvas\",de={backdrop:!0,keyboard:!0,scroll:!1},ue={backdrop:\"(boolean|string)\",keyboard:\"boolean\",scroll:\"boolean\"};class _e extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return de}static get DefaultType(){return ue}static get NAME(){return\"offcanvas\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||F.trigger(this._element,\"show.bs.offcanvas\",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Yt).hide(),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.classList.add(re),this._queueCallback((()=\u003e{this._config.scroll\u0026\u0026!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(oe),this._element.classList.remove(re),F.trigger(this._element,\"shown.bs.offcanvas\",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown\u0026\u0026(F.trigger(this._element,\"hide.bs.offcanvas\").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(ae),this._backdrop.hide(),this._queueCallback((()=\u003e{this._element.classList.remove(oe,ae),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._config.scroll||(new Yt).reset(),F.trigger(this._element,he)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new zt({className:\"offcanvas-backdrop\",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=\u003e{\"static\"!==this._config.backdrop?this.hide():F.trigger(this._element,ce)}:null})}_initializeFocusTrap(){return new Rt({trapElement:this._element})}_addEventListeners(){F.on(this._element,\"keydown.dismiss.bs.offcanvas\",(t=\u003e{\"Escape\"===t.key\u0026\u0026(this._config.keyboard?this.hide():F.trigger(this._element,ce))}))}static jQueryInterface(t){return this.each((function(){const e=_e.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}F.on(document,\"click.bs.offcanvas.data-api\",'[data-bs-toggle=\"offcanvas\"]',(function(t){const e=K.getElementFromSelector(this);if([\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026t.preventDefault(),d(this))return;F.one(e,he,(()=\u003e{h(this)\u0026\u0026this.focus()}));const s=K.findOne(le);s\u0026\u0026s!==e\u0026\u0026_e.getInstance(s).hide(),_e.getOrCreateInstance(e).toggle(this)})),F.on(window,\"load.bs.offcanvas.data-api\",(()=\u003e{for(const t of K.find(le))_e.getOrCreateInstance(t).show()})),F.on(window,\"resize.bs.offcanvas\",(()=\u003e{for(const t of K.find(\"[aria-modal][class*=show][class*=offcanvas-]\"))\"fixed\"!==getComputedStyle(t).position\u0026\u0026_e.getOrCreateInstance(t).hide()})),V(_e),b(_e);const ge={\"*\":[\"class\",\"dir\",\"id\",\"lang\",\"role\",\/^aria-[\\w-]*$\/i],a:[\"target\",\"href\",\"title\",\"rel\"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[\"src\",\"srcset\",\"alt\",\"title\",\"width\",\"height\"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},fe=new Set([\"background\",\"cite\",\"href\",\"itemtype\",\"longdesc\",\"poster\",\"src\",\"xlink:href\"]),me=\/^(?!javascript:)(?:[a-z0-9+.-]+:|[^\u0026:\/?#]*(?:[\/?#]|$))\/i,pe=(t,e)=\u003e{const s=t.nodeName.toLowerCase();return e.includes(s)?!fe.has(s)||Boolean(me.test(t.nodeValue)):e.filter((t=\u003et instanceof RegExp)).some((t=\u003et.test(s)))},be={allowList:ge,content:{},extraClass:\"\",html:!1,sanitize:!0,sanitizeFn:null,template:\"\u003cdiv\u003e\u003c\/div\u003e\"},ve={allowList:\"object\",content:\"object\",extraClass:\"(string|function)\",html:\"boolean\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",template:\"string\"},ye={entry:\"(string|element|function|null)\",selector:\"(string|element)\"};class we extends q{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return be}static get DefaultType(){return ve}static get NAME(){return\"TemplateFactory\"}getContent(){return Object.values(this._config.content).map((t=\u003ethis._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length\u003e0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement(\"div\");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,s]of Object.entries(this._config.content))this._setContent(t,s,e);const e=t.children[0],s=this._resolvePossibleFunction(this._config.extraClass);return s\u0026\u0026e.classList.add(...s.split(\" \")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,s]of Object.entries(t))super._typeCheckConfig({selector:e,entry:s},ye)}_setContent(t,e,s){const i=K.findOne(s,t);i\u0026\u0026((e=this._resolvePossibleFunction(e))?l(e)?this._putElementInTemplate(c(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,s){if(!t.length)return t;if(s\u0026\u0026\"function\"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,\"text\/html\"),n=[].concat(...i.body.querySelectorAll(\"*\"));for(const t of n){const s=t.nodeName.toLowerCase();if(!Object.keys(e).includes(s)){t.remove();continue}const i=[].concat(...t.attributes),n=[].concat(e[\"*\"]||[],e[s]||[]);for(const e of i)pe(e,n)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return v(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML=\"\",void e.append(t);e.textContent=t.textContent}}const Ae=new Set([\"sanitize\",\"allowList\",\"sanitizeFn\"]),Ee=\"fade\",Ce=\"show\",Te=\".modal\",ke=\"hide.bs.modal\",Se=\"hover\",Le=\"focus\",Oe={AUTO:\"auto\",TOP:\"top\",RIGHT:p()?\"left\":\"right\",BOTTOM:\"bottom\",LEFT:p()?\"right\":\"left\"},Ie={allowList:ge,animation:!0,boundary:\"clippingParents\",container:!1,customClass:\"\",delay:0,fallbackPlacements:[\"top\",\"right\",\"bottom\",\"left\"],html:!1,offset:[0,6],placement:\"top\",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'\u003cdiv class=\"tooltip\" role=\"tooltip\"\u003e\u003cdiv class=\"tooltip-arrow\"\u003e\u003c\/div\u003e\u003cdiv class=\"tooltip-inner\"\u003e\u003c\/div\u003e\u003c\/div\u003e',title:\"\",trigger:\"hover focus\"},De={allowList:\"object\",animation:\"boolean\",boundary:\"(string|element)\",container:\"(string|element|boolean)\",customClass:\"(string|function)\",delay:\"(number|object)\",fallbackPlacements:\"array\",html:\"boolean\",offset:\"(array|string|function)\",placement:\"(string|function)\",popperConfig:\"(null|object|function)\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",selector:\"(string|boolean)\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\"};class Ne extends W{constructor(t,e){if(void 0===s)throw new TypeError(\"Bootstrap's tooltips require Popper (https:\/\/popper.js.org)\");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ie}static get DefaultType(){return De}static get NAME(){return\"tooltip\"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled\u0026\u0026(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),F.off(this._element.closest(Te),ke,this._hideModalHandler),this._element.getAttribute(\"data-bs-original-title\")\u0026\u0026this._element.setAttribute(\"title\",this._element.getAttribute(\"data-bs-original-title\")),this._disposePopper(),super.dispose()}show(){if(\"none\"===this._element.style.display)throw new Error(\"Please use show on visible elements\");if(!this._isWithContent()||!this._isEnabled)return;const t=F.trigger(this._element,this.constructor.eventName(\"show\")),e=(u(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const s=this._getTipElement();this._element.setAttribute(\"aria-describedby\",s.getAttribute(\"id\"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(s),F.trigger(this._element,this.constructor.eventName(\"inserted\"))),this._popper=this._createPopper(s),s.classList.add(Ce),\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))F.on(t,\"mouseover\",_);this._queueCallback((()=\u003e{F.trigger(this._element,this.constructor.eventName(\"shown\")),!1===this._isHovered\u0026\u0026this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()\u0026\u0026!F.trigger(this._element,this.constructor.eventName(\"hide\")).defaultPrevented){if(this._getTipElement().classList.remove(Ce),\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))F.off(t,\"mouseover\",_);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=\u003e{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute(\"aria-describedby\"),F.trigger(this._element,this.constructor.eventName(\"hidden\")))}),this.tip,this._isAnimated())}}update(){this._popper\u0026\u0026this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Ee,Ce),e.classList.add(`bs-${this.constructor.NAME}-auto`);const s=(t=\u003e{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute(\"id\",s),this._isAnimated()\u0026\u0026e.classList.add(Ee),e}setContent(t){this._newContent=t,this._isShown()\u0026\u0026(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new we({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{\".tooltip-inner\":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute(\"data-bs-original-title\")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip\u0026\u0026this.tip.classList.contains(Ee)}_isShown(){return this.tip\u0026\u0026this.tip.classList.contains(Ce)}_createPopper(t){const e=v(this._config.placement,[this,t,this._element]),i=Oe[e.toUpperCase()];return s.createPopper(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map((t=\u003eNumber.parseInt(t,10))):\"function\"==typeof t?e=\u003et(e,this._element):t}_resolvePossibleFunction(t){return v(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:\"flip\",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:\"offset\",options:{offset:this._getOffset()}},{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"arrow\",options:{element:`.${this.constructor.NAME}-arrow`}},{name:\"preSetPlacement\",enabled:!0,phase:\"beforeMain\",fn:t=\u003e{this._getTipElement().setAttribute(\"data-popper-placement\",t.state.placement)}}]};return{...e,...v(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(\" \");for(const e of t)if(\"click\"===e)F.on(this._element,this.constructor.eventName(\"click\"),this._config.selector,(t=\u003e{this._initializeOnDelegatedTarget(t).toggle()}));else if(\"manual\"!==e){const t=e===Se?this.constructor.eventName(\"mouseenter\"):this.constructor.eventName(\"focusin\"),s=e===Se?this.constructor.eventName(\"mouseleave\"):this.constructor.eventName(\"focusout\");F.on(this._element,t,this._config.selector,(t=\u003e{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[\"focusin\"===t.type?Le:Se]=!0,e._enter()})),F.on(this._element,s,this._config.selector,(t=\u003e{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[\"focusout\"===t.type?Le:Se]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=\u003e{this._element\u0026\u0026this.hide()},F.on(this._element.closest(Te),ke,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute(\"title\");t\u0026\u0026(this._element.getAttribute(\"aria-label\")||this._element.textContent.trim()||this._element.setAttribute(\"aria-label\",t),this._element.setAttribute(\"data-bs-original-title\",t),this._element.removeAttribute(\"title\"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=\u003e{this._isHovered\u0026\u0026this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=\u003e{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ae.has(t)\u0026\u0026delete e[t];return t={...e,...\"object\"==typeof t\u0026\u0026t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:c(t.container),\"number\"==typeof t.delay\u0026\u0026(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title\u0026\u0026(t.title=t.title.toString()),\"number\"==typeof t.content\u0026\u0026(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,s]of Object.entries(this._config))this.constructor.Default[e]!==s\u0026\u0026(t[e]=s);return t.selector=!1,t.trigger=\"manual\",t}_disposePopper(){this._popper\u0026\u0026(this._popper.destroy(),this._popper=null),this.tip\u0026\u0026(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Ne.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}b(Ne);const Pe={...Ne.Default,content:\"\",offset:[0,8],placement:\"right\",template:'\u003cdiv class=\"popover\" role=\"tooltip\"\u003e\u003cdiv class=\"popover-arrow\"\u003e\u003c\/div\u003e\u003ch3 class=\"popover-header\"\u003e\u003c\/h3\u003e\u003cdiv class=\"popover-body\"\u003e\u003c\/div\u003e\u003c\/div\u003e',trigger:\"click\"},xe={...Ne.DefaultType,content:\"(null|string|element|function)\"};class Me extends Ne{static get Default(){return Pe}static get DefaultType(){return xe}static get NAME(){return\"popover\"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{\".popover-header\":this._getTitle(),\".popover-body\":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=Me.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}b(Me);const je=\"click.bs.scrollspy\",Fe=\"active\",$e=\"[href]\",ze={offset:null,rootMargin:\"0px 0px -25%\",smoothScroll:!1,target:null,threshold:[.1,.5,1]},He={offset:\"(number|null)\",rootMargin:\"string\",smoothScroll:\"boolean\",target:\"element\",threshold:\"array\"};class Be extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=\"visible\"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ze}static get DefaultType(){return He}static get NAME(){return\"scrollspy\"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=c(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,\"string\"==typeof t.threshold\u0026\u0026(t.threshold=t.threshold.split(\",\").map((t=\u003eNumber.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll\u0026\u0026(F.off(this._config.target,je),F.on(this._config.target,je,$e,(t=\u003e{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const s=this._rootElement||window,i=e.offsetTop-this._element.offsetTop;if(s.scrollTo)return void s.scrollTo({top:i,behavior:\"smooth\"});s.scrollTop=i}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=\u003ethis._observerCallback(t)),t)}_observerCallback(t){const e=t=\u003ethis._targetLinks.get(`#${t.target.id}`),s=t=\u003e{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},i=(this._rootElement||document.documentElement).scrollTop,n=i\u003e=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop\u003e=this._previousScrollData.visibleEntryTop;if(n\u0026\u0026t){if(s(o),!i)return}else n||t||s(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=K.find($e,this._config.target);for(const e of t){if(!e.hash||d(e))continue;const t=K.findOne(decodeURI(e.hash),this._element);h(t)\u0026\u0026(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t\u0026\u0026(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Fe),this._activateParents(t),F.trigger(this._element,\"activate.bs.scrollspy\",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(\"dropdown-item\"))K.findOne(\".dropdown-toggle\",t.closest(\".dropdown\")).classList.add(Fe);else for(const e of K.parents(t,\".nav, .list-group\"))for(const t of K.prev(e,\".nav-link, .nav-item \u003e .nav-link, .list-group-item\"))t.classList.add(Fe)}_clearActiveClass(t){t.classList.remove(Fe);const e=K.find(\"[href].active\",t);for(const t of e)t.classList.remove(Fe)}static jQueryInterface(t){return this.each((function(){const e=Be.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}F.on(window,\"load.bs.scrollspy.data-api\",(()=\u003e{for(const t of K.find('[data-bs-spy=\"scroll\"]'))Be.getOrCreateInstance(t)})),b(Be);const qe=\"ArrowLeft\",We=\"ArrowRight\",Re=\"ArrowUp\",Ke=\"ArrowDown\",Ve=\"active\",Qe=\"fade\",Xe=\"show\",Ye='[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]',Ue=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role=\"tab\"]:not(.dropdown-toggle), ${Ye}`;class Ge extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role=\"tablist\"]'),this._parent\u0026\u0026(this._setInitialAttributes(this._parent,this._getChildren()),F.on(this._element,\"keydown.bs.tab\",(t=\u003ethis._keydown(t))))}static get NAME(){return\"tab\"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),s=e?F.trigger(e,\"hide.bs.tab\",{relatedTarget:t}):null;F.trigger(t,\"show.bs.tab\",{relatedTarget:e}).defaultPrevented||s\u0026\u0026s.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t\u0026\u0026(t.classList.add(Ve),this._activate(K.getElementFromSelector(t)),this._queueCallback((()=\u003e{\"tab\"===t.getAttribute(\"role\")?(t.removeAttribute(\"tabindex\"),t.setAttribute(\"aria-selected\",!0),this._toggleDropDown(t,!0),F.trigger(t,\"shown.bs.tab\",{relatedTarget:e})):t.classList.add(Xe)}),t,t.classList.contains(Qe)))}_deactivate(t,e){t\u0026\u0026(t.classList.remove(Ve),t.blur(),this._deactivate(K.getElementFromSelector(t)),this._queueCallback((()=\u003e{\"tab\"===t.getAttribute(\"role\")?(t.setAttribute(\"aria-selected\",!1),t.setAttribute(\"tabindex\",\"-1\"),this._toggleDropDown(t,!1),F.trigger(t,\"hidden.bs.tab\",{relatedTarget:e})):t.classList.remove(Xe)}),t,t.classList.contains(Qe)))}_keydown(t){if(![qe,We,Re,Ke].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[We,Ke].includes(t.key),s=w(this._getChildren().filter((t=\u003e!d(t))),t.target,e,!0);s\u0026\u0026(s.focus({preventScroll:!0}),Ge.getOrCreateInstance(s).show())}_getChildren(){return K.find(Ue,this._parent)}_getActiveElem(){return this._getChildren().find((t=\u003ethis._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,\"role\",\"tablist\");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),s=this._getOuterElement(t);t.setAttribute(\"aria-selected\",e),s!==t\u0026\u0026this._setAttributeIfNotExists(s,\"role\",\"presentation\"),e||t.setAttribute(\"tabindex\",\"-1\"),this._setAttributeIfNotExists(t,\"role\",\"tab\"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=K.getElementFromSelector(t);e\u0026\u0026(this._setAttributeIfNotExists(e,\"role\",\"tabpanel\"),t.id\u0026\u0026this._setAttributeIfNotExists(e,\"aria-labelledby\",`${t.id}`))}_toggleDropDown(t,e){const s=this._getOuterElement(t);if(!s.classList.contains(\"dropdown\"))return;const i=(t,i)=\u003e{const n=K.findOne(t,s);n\u0026\u0026n.classList.toggle(i,e)};i(\".dropdown-toggle\",Ve),i(\".dropdown-menu\",Xe),s.setAttribute(\"aria-expanded\",e)}_setAttributeIfNotExists(t,e,s){t.hasAttribute(e)||t.setAttribute(e,s)}_elemIsActive(t){return t.classList.contains(Ve)}_getInnerElement(t){return t.matches(Ue)?t:K.findOne(Ue,t)}_getOuterElement(t){return t.closest(\".nav-item, .list-group-item\")||t}static jQueryInterface(t){return this.each((function(){const e=Ge.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}F.on(document,\"click.bs.tab\",Ye,(function(t){[\"A\",\"AREA\"].includes(this.tagName)\u0026\u0026t.preventDefault(),d(this)||Ge.getOrCreateInstance(this).show()})),F.on(window,\"load.bs.tab\",(()=\u003e{for(const t of K.find('.active[data-bs-toggle=\"tab\"], .active[data-bs-toggle=\"pill\"], .active[data-bs-toggle=\"list\"]'))Ge.getOrCreateInstance(t)})),b(Ge);const Je=\"hide\",Ze=\"show\",ts=\"showing\",es={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},ss={animation:!0,autohide:!0,delay:5e3};class is extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ss}static get DefaultType(){return es}static get NAME(){return\"toast\"}show(){F.trigger(this._element,\"show.bs.toast\").defaultPrevented||(this._clearTimeout(),this._config.animation\u0026\u0026this._element.classList.add(\"fade\"),this._element.classList.remove(Je),g(this._element),this._element.classList.add(Ze,ts),this._queueCallback((()=\u003e{this._element.classList.remove(ts),F.trigger(this._element,\"shown.bs.toast\"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()\u0026\u0026(F.trigger(this._element,\"hide.bs.toast\").defaultPrevented||(this._element.classList.add(ts),this._queueCallback((()=\u003e{this._element.classList.add(Je),this._element.classList.remove(ts,Ze),F.trigger(this._element,\"hidden.bs.toast\")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()\u0026\u0026this._element.classList.remove(Ze),super.dispose()}isShown(){return this._element.classList.contains(Ze)}_maybeScheduleHide(){this._config.autohide\u0026\u0026(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=\u003e{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case\"mouseover\":case\"mouseout\":this._hasMouseInteraction=e;break;case\"focusin\":case\"focusout\":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){F.on(this._element,\"mouseover.bs.toast\",(t=\u003ethis._onInteraction(t,!0))),F.on(this._element,\"mouseout.bs.toast\",(t=\u003ethis._onInteraction(t,!1))),F.on(this._element,\"focusin.bs.toast\",(t=\u003ethis._onInteraction(t,!0))),F.on(this._element,\"focusout.bs.toast\",(t=\u003ethis._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=is.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}return V(is),b(is),{Alert:Q,Button:Y,Carousel:ct,Collapse:mt,Dropdown:xt,Modal:ne,Offcanvas:_e,Popover:Me,ScrollSpy:Be,Tab:Ge,Toast:is,Tooltip:Ne}}));\n\/\/# sourceMappingURL=bootstrap.min.js.map\/*\n *\tjQuery elevateZoom 3.0.8\n *\tDemo's and documentation:\n *\twww.elevateweb.co.uk\/image-zoom\n *\n *\tCopyright (c) 2012 Andrew Eades\n *\twww.elevateweb.co.uk\n *\n *\tDual licensed under the GPL and MIT licenses.\n *\thttp:\/\/en.wikipedia.org\/wiki\/MIT_License\n *\thttp:\/\/en.wikipedia.org\/wiki\/GNU_General_Public_License\n *\n\n\/*\n *\tjQuery elevateZoom 3.0.3\n *\tDemo's and documentation:\n *\twww.elevateweb.co.uk\/image-zoom\n *\n *\tCopyright (c) 2012 Andrew Eades\n *\twww.elevateweb.co.uk\n *\n *\tDual licensed under the GPL and MIT licenses.\n *\thttp:\/\/en.wikipedia.org\/wiki\/MIT_License\n *\thttp:\/\/en.wikipedia.org\/wiki\/GNU_General_Public_License\n *\/\n\n\nif ( typeof Object.create !== 'function' ) {\n\tObject.create = function( obj ) {\n\t\tfunction F() {};\n\t\tF.prototype = obj;\n\t\treturn new F();\n\t};\n}\n\n(function( $, window, document, undefined ) {\n\tvar ElevateZoom = {\n\t\t\tinit: function( options, elem ) {\n\t\t\t\tvar self = this;\n\n\t\t\t\tself.elem = elem;\n\t\t\t\tself.$elem = $( elem );\n\n\t\t\t\tself.imageSrc = self.$elem.data(\"zoom-image\") ? self.$elem.data(\"zoom-image\") : self.$elem.attr(\"src\");\n\n\t\t\t\tself.options = $.extend( {}, $.fn.elevateZoom.options, options );\n\n\t\t\t\t\/\/TINT OVERRIDE SETTINGS\n\t\t\t\tif(self.options.tint) {\n\t\t\t\t\tself.options.lensColour = \"none\", \/\/colour of the lens background\n\t\t\t\t\tself.options.lensOpacity =  \"1\" \/\/opacity of the lens\n\t\t\t\t}\n\t\t\t\t\/\/INNER OVERRIDE SETTINGS\n\t\t\t\tif(self.options.zoomType == \"inner\") {self.options.showLens = false;}\n\n\n\t\t\t\t\/\/Remove alt on hover\n\n\t\t\t\tself.$elem.parent().removeAttr('title').removeAttr('alt');\n\n\t\t\t\tself.zoomImage = self.imageSrc;\n\n\t\t\t\tself.refresh( 1 );\n\n\n\n\t\t\t\t\/\/Create the image swap from the gallery \n\t\t\t\t$('#'+self.options.gallery + ' a').click( function(e) { \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\/\/Set a class on the currently active gallery image\n\t\t\t\t\tif(self.options.galleryActiveClass){\n\t\t\t\t\t\t$('#'+self.options.gallery + ' a').removeClass(self.options.galleryActiveClass);\n\t\t\t\t\t\t$(this).addClass(self.options.galleryActiveClass);\n\t\t\t\t\t}\n\t\t\t\t\t\/\/stop any link on the a tag from working\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\/\/call the swap image function            \n\t\t\t\t\tif($(this).data(\"zoom-image\")){self.zoomImagePre = $(this).data(\"zoom-image\")}\n\t\t\t\t\telse{self.zoomImagePre = $(this).data(\"image\");}\n\t\t\t\t\tif(self.zoomImagePre !='video'){\n\t\t\t\t\tself.swaptheimage($(this).data(\"image\"), self.zoomImagePre);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t},\n\n\t\t\trefresh: function( length ) {\n\t\t\t\tvar self = this;\n\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tself.fetch(self.imageSrc);\n\n\t\t\t\t}, length || self.options.refresh );\n\t\t\t},\n\n\t\t\tfetch: function(imgsrc) {\n\t\t\t\t\/\/get the image\n\t\t\t\tvar self = this;\n\t\t\t\tvar newImg = new Image();\n\t\t\t\tnewImg.onload = function() {\n\t\t\t\t\t\/\/set the large image dimensions - used to calculte ratio's\n\t\t\t\t\tself.largeWidth = newImg.width;\n\t\t\t\t\tself.largeHeight = newImg.height;\n\t\t\t\t\t\/\/once image is loaded start the calls\n\t\t\t\t\tself.startZoom();\n\t\t\t\t\tself.currentImage = self.imageSrc;\n\t\t\t\t\t\/\/let caller know image has been loaded\n\t\t\t\t\tself.options.onZoomedImageLoaded(self.$elem);\n\t\t\t\t}\n\t\t\t\tnewImg.src = imgsrc; \/\/ this must be done AFTER setting onload\n\n\t\t\t\treturn;\n\n\t\t\t},\n\n\t\t\tstartZoom: function( ) {\n\t\t\t\tvar self = this;\n\t\t\t\t\/\/get dimensions of the non zoomed image\n\t\t\t\tself.nzWidth = self.$elem.width();\n\t\t\t\tself.nzHeight = self.$elem.height();\n\n\t\t\t\t\/\/activated elements\n\t\t\t\tself.isWindowActive = false;\n\t\t\t\tself.isLensActive = false;\n\t\t\t\tself.isTintActive = false;\n\t\t\t\tself.overWindow = false;    \n\n\t\t\t\t\/\/CrossFade Wrappe\n\t\t\t\tif(self.options.imageCrossfade){\n\t\t\t\t\tself.zoomWrap = self.$elem.wrap('\u003cdiv style=\"height:'+self.nzHeight+'px;width:'+self.nzWidth+'px;\" class=\"zoomWrapper\" \/\u003e');        \n\t\t\t\t\tself.$elem.css('position', 'absolute'); \n\t\t\t\t}\n\n\t\t\t\tself.zoomLock = 1;\n\t\t\t\tself.scrollingLock = false;\n\t\t\t\tself.changeBgSize = false;\n\t\t\t\tself.currentZoomLevel = self.options.zoomLevel;\n\n\n\t\t\t\t\/\/get offset of the non zoomed image\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\t\t\t\t\/\/calculate the width ratio of the large\/small image\n\t\t\t\tself.widthRatio = (self.largeWidth\/self.currentZoomLevel) \/ self.nzWidth;\n\t\t\t\tself.heightRatio = (self.largeHeight\/self.currentZoomLevel) \/ self.nzHeight; \n\n\n\t\t\t\t\/\/if window zoom        \n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.zoomWindowStyle = \"overflow: hidden;\"\n\t\t\t\t\t\t+ \"background-position: 0px 0px;text-align:center;\"  \n\t\t\t\t\t\t+ \"background-color: \" + String(self.options.zoomWindowBgColour)            \n\t\t\t\t\t\t+ \";width: \" + String(self.options.zoomWindowWidth) + \"px;\"\n\t\t\t\t\t\t+ \"height: \" + String(self.options.zoomWindowHeight)\n\t\t\t\t\t\t+ \"px;float: left;\"\n\t\t\t\t\t\t+ \"background-size: \"+ self.largeWidth\/self.currentZoomLevel+ \"px \" +self.largeHeight\/self.currentZoomLevel + \"px;\"\n\t\t\t\t\t\t+ \"display: none;z-index:100;\"\n\t\t\t\t\t\t+ \"border: \" + String(self.options.borderSize) \n\t\t\t\t\t\t+ \"px solid \" + self.options.borderColour \n\t\t\t\t\t\t+ \";background-repeat: no-repeat;\"\n\t\t\t\t\t\t+ \"position: absolute;\";\n\t\t\t\t}    \n\n\n\t\t\t\t\/\/if inner  zoom    \n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\/\/has a border been put on the image? Lets cater for this\n\n\t\t\t\t\tvar borderWidth = self.$elem.css(\"border-left-width\");\n\n\t\t\t\t\tself.zoomWindowStyle = \"overflow: hidden;\"\n\t\t\t\t\t\t+ \"margin-left: \" + String(borderWidth) + \";\" \n\t\t\t\t\t\t+ \"margin-top: \" + String(borderWidth) + \";\"         \n\t\t\t\t\t\t+ \"background-position: 0px 0px;\"\n\t\t\t\t\t\t+ \"width: \" + String(self.nzWidth) + \"px;\"\n\t\t\t\t\t\t+ \"height: \" + String(self.nzHeight)\n\t\t\t\t\t\t+ \"px;float: left;\"\n\t\t\t\t\t\t+ \"display: none;\"\n\t\t\t\t\t\t+ \"cursor:\"+(self.options.cursor)+\";\"\n\t\t\t\t\t\t+ \"px solid \" + self.options.borderColour \n\t\t\t\t\t\t+ \";background-repeat: no-repeat;\"\n\t\t\t\t\t\t+ \"position: absolute;\";\n\t\t\t\t}    \n\n\n\n\t\t\t\t\/\/lens style for window zoom\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\n\n\t\t\t\t\t\/\/ adjust images less than the window height\n\n\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\tlensHeight = self.nzHeight;              \n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t}\n\t\t\t\t\tif(self.largeWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t}       \n\t\t\t\t\telse{\n\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tself.lensStyle = \"background-position: 0px 0px;width: \" + String((self.options.zoomWindowWidth)\/self.widthRatio) + \"px;height: \" + String((self.options.zoomWindowHeight)\/self.heightRatio)\n\t\t\t\t\t+ \"px;float: right;display: none;\"\n\t\t\t\t\t+ \"overflow: hidden;\"\n\t\t\t\t\t+ \"z-index: 999;\"   \n\t\t\t\t\t+ \"-webkit-transform: translateZ(0);\"               \n\t\t\t\t\t+ \"opacity:\"+(self.options.lensOpacity)+\";filter: alpha(opacity = \"+(self.options.lensOpacity*100)+\"); zoom:1;\"\n\t\t\t\t\t+ \"width:\"+lensWidth+\"px;\"\n\t\t\t\t\t+ \"height:\"+lensHeight+\"px;\"\n\t\t\t\t\t+ \"background-color:\"+(self.options.lensColour)+\";\"\t\t\t\t\t\n\t\t\t\t\t+ \"cursor:\"+(self.options.cursor)+\";\"\n\t\t\t\t\t+ \"border: \"+(self.options.lensBorderSize)+\"px\" +\n\t\t\t\t\t\" solid \"+(self.options.lensBorderColour)+\";background-repeat: no-repeat;position: absolute;\";\n\t\t\t\t} \n\n\n\t\t\t\t\/\/tint style\n\t\t\t\tself.tintStyle = \"display: block;\"\n\t\t\t\t\t+ \"position: absolute;\"\n\t\t\t\t\t+ \"background-color: \"+self.options.tintColour+\";\"\t\n\t\t\t\t\t+ \"filter:alpha(opacity=0);\"\t\t\n\t\t\t\t\t+ \"opacity: 0;\"\t\n\t\t\t\t\t+ \"width: \" + self.nzWidth + \"px;\"\n\t\t\t\t\t+ \"height: \" + self.nzHeight + \"px;\"\n\n\t\t\t\t\t;\n\n\t\t\t\t\/\/lens style for lens zoom with optional round for modern browsers\n\t\t\t\tself.lensRound = '';\n\n\t\t\t\tif(self.options.zoomType == \"lens\") {\n\n\t\t\t\t\tself.lensStyle = \"background-position: 0px 0px;\"\n\t\t\t\t\t\t+ \"float: left;display: none;\"\n\t\t\t\t\t\t+ \"border: \" + String(self.options.borderSize) + \"px solid \" + self.options.borderColour+\";\"\n\t\t\t\t\t\t+ \"width:\"+ String(self.options.lensSize) +\"px;\"\n\t\t\t\t\t\t+ \"height:\"+ String(self.options.lensSize)+\"px;\"\n\t\t\t\t\t\t+ \"background-repeat: no-repeat;position: absolute;\";\n\n\n\t\t\t\t}\n\n\n\t\t\t\t\/\/does not round in all browsers\n\t\t\t\tif(self.options.lensShape == \"round\") {\n\t\t\t\t\tself.lensRound = \"border-top-left-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\"\n\t\t\t\t\t+ \"border-top-right-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\"\n\t\t\t\t\t+ \"border-bottom-left-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\"\n\t\t\t\t\t+ \"border-bottom-right-radius: \" + String(self.options.lensSize \/ 2 + self.options.borderSize) + \"px;\";\n\n\t\t\t\t}\n\n\t\t\t\t\/\/create the div's                                                + \"\"\n\t\t\t\t\/\/self.zoomContainer = $('\u003cdiv\/\u003e').addClass('zoomContainer').css({\"position\":\"relative\", \"height\":self.nzHeight, \"width\":self.nzWidth});\n\n\t\t\t\tself.zoomContainer = $('\u003cdiv class=\"zoomContainer\" style=\"-webkit-transform: translateZ(0);position:absolute;left:'+self.nzOffset.left+'px;top:'+self.nzOffset.top+'px;height:'+self.nzHeight+'px;width:'+self.nzWidth+'px;\"\u003e\u003c\/div\u003e');\n\t\t\t\t$('body').append(self.zoomContainer);\t\n\n\n\t\t\t\t\/\/this will add overflow hidden and contrain the lens on lens mode       \n\t\t\t\tif(self.options.containLensZoom \u0026\u0026 self.options.zoomType == \"lens\"){\n\t\t\t\t\tself.zoomContainer.css(\"overflow\", \"hidden\");\n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomLens = $(\"\u003cdiv class='zoomLens' style='\" + self.lensStyle + self.lensRound +\"'\u003e\u0026nbsp;\u003c\/div\u003e\")\n\t\t\t\t\t.appendTo(self.zoomContainer)\n\t\t\t\t\t.click(function () {\n\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t});\n\n\n\t\t\t\t\tif(self.options.tint) {\n\t\t\t\t\t\tself.tintContainer = $('\u003cdiv\/\u003e').addClass('tintContainer');\t\n\t\t\t\t\t\tself.zoomTint = $(\"\u003cdiv class='zoomTint' style='\"+self.tintStyle+\"'\u003e\u003c\/div\u003e\");\n\n\n\t\t\t\t\t\tself.zoomLens.wrap(self.tintContainer);\n\n\n\t\t\t\t\t\tself.zoomTintcss = self.zoomLens.after(self.zoomTint);\t\n\n\t\t\t\t\t\t\/\/if tint enabled - set an image to show over the tint\n\n\t\t\t\t\t\tself.zoomTintImage = $('\u003cimg style=\"position: absolute; left: 0px; top: 0px; max-width: none; width: '+self.nzWidth+'px; height: '+self.nzHeight+'px;\" src=\"'+self.imageSrc+'\"\u003e')\n\t\t\t\t\t\t.appendTo(self.zoomLens)\n\t\t\t\t\t\t.click(function () {\n\n\t\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t\t});\n\n\t\t\t\t\t}          \n\n\t\t\t\t}\n\n\n\n\n\n\n\n\t\t\t\t\/\/create zoom window \n\t\t\t\tif(isNaN(self.options.zoomWindowPosition)){\n\t\t\t\t\tself.zoomWindow = $(\"\u003cdiv style='z-index:999;left:\"+(self.windowOffsetLeft)+\"px;top:\"+(self.windowOffsetTop)+\"px;\" + self.zoomWindowStyle + \"' class='zoomWindow'\u003e\u0026nbsp;\u003c\/div\u003e\")\n\t\t\t\t\t.appendTo('body')\n\t\t\t\t\t.click(function () {\n\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t});\n\t\t\t\t}else{\n\t\t\t\t\tself.zoomWindow = $(\"\u003cdiv style='z-index:999;left:\"+(self.windowOffsetLeft)+\"px;top:\"+(self.windowOffsetTop)+\"px;\" + self.zoomWindowStyle + \"' class='zoomWindow'\u003e\u0026nbsp;\u003c\/div\u003e\")\n\t\t\t\t\t.appendTo(self.zoomContainer)\n\t\t\t\t\t.click(function () {\n\t\t\t\t\t\tself.$elem.trigger('click');\n\t\t\t\t\t});\n\t\t\t\t}              \n\t\t\t\tself.zoomWindowContainer = $('\u003cdiv\/\u003e').addClass('zoomWindowContainer').css(\"width\",self.options.zoomWindowWidth);\n\t\t\t\tself.zoomWindow.wrap(self.zoomWindowContainer);\n\n\n\t\t\t\t\/\/  self.captionStyle = \"text-align: left;background-color: black;color: white;font-weight: bold;padding: 10px;font-family: sans-serif;font-size: 11px\";                                                                                                                                                                                                                                          \n\t\t\t\t\/\/ self.zoomCaption = $('\u003cdiv class=\"elevatezoom-caption\" style=\"'+self.captionStyle+'display: block; width: 280px;\"\u003eINSERT ALT TAG\u003c\/div\u003e').appendTo(self.zoomWindow.parent());\n\n\t\t\t\tif(self.options.zoomType == \"lens\") {\n\t\t\t\t\tself.zoomLens.css({ backgroundImage: \"url('\" + self.imageSrc + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + self.imageSrc + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + self.imageSrc + \"')\" }); \n\t\t\t\t}\n\t\t\t\t\/*-------------------END THE ZOOM WINDOW AND LENS----------------------------------*\/\n\t\t\t\t\/\/touch events\n\t\t\t\tself.$elem.bind('touchmove', function(e){    \n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];  \n\t\t\t\t\tself.setPosition(touch);\n\n\t\t\t\t});  \n\t\t\t\tself.zoomContainer.bind('touchmove', function(e){ \n\t\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\tself.showHideWindow(\"show\");\n\n\t\t\t\t\t}\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];  \n\t\t\t\t\tself.setPosition(touch); \n\n\t\t\t\t});  \t\n\t\t\t\tself.zoomContainer.bind('touchend', function(e){ \n\t\t\t\t\tself.showHideWindow(\"hide\");\n\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"hide\");}\n\t\t\t\t});  \t\n\n\t\t\t\tself.$elem.bind('touchend', function(e){ \n\t\t\t\t\tself.showHideWindow(\"hide\");\n\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"hide\");}\n\t\t\t\t});  \t\n\t\t\t\tif(self.options.showLens) {\n\t\t\t\t\tself.zoomLens.bind('touchmove', function(e){ \n\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tvar touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];  \n\t\t\t\t\t\tself.setPosition(touch); \n\t\t\t\t\t});    \n\n\n\t\t\t\t\tself.zoomLens.bind('touchend', function(e){ \n\t\t\t\t\t\tself.showHideWindow(\"hide\");\n\t\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"hide\");}\n\t\t\t\t\t});  \n\t\t\t\t}\n\t\t\t\t\/\/Needed to work in IE\n\t\t\t\tself.$elem.bind('mousemove', function(e){   \n\t\t\t\t\tif(self.overWindow == false){self.setElements(\"show\");}\n\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t}   \n\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\tself.lastY = e.clientY;    \n\n\t\t\t\t});  \t\n\n\t\t\t\tself.zoomContainer.bind('mousemove', function(e){ \n\n\t\t\t\t\tif(self.overWindow == false){self.setElements(\"show\");} \n\n\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired \n\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t}   \n\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t});  \t\n\t\t\t\tif(self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomLens.bind('mousemove', function(e){      \n\t\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t\t}   \n\t\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomTint.bind('mousemove', function(e){ \n\t\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t\t}   \n\t\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.bind('mousemove', function(e) {\n\t\t\t\t\t\t\/\/self.overWindow = true;\n\t\t\t\t\t\t\/\/make sure on orientation change the setposition is not fired\n\t\t\t\t\t\tif(self.lastX !== e.clientX || self.lastY !== e.clientY){\n\t\t\t\t\t\t\tself.setPosition(e);\n\t\t\t\t\t\t\tself.currentLoc = e;\n\t\t\t\t\t\t}   \n\t\t\t\t\t\tself.lastX = e.clientX;\n\t\t\t\t\t\tself.lastY = e.clientY;    \n\t\t\t\t\t});\n\n\t\t\t\t}\n\n\n\t\t\t\t\/\/  lensFadeOut: 500,  zoomTintFadeIn\n\t\t\t\tself.zoomContainer.add(self.$elem).mouseenter(function(){\n\n\t\t\t\t\tif(self.overWindow == false){self.setElements(\"show\");} \n\n\n\t\t\t\t}).mouseleave(function(){\n\t\t\t\t\tif(!self.scrollLock){\n\t\t\t\t\t\tself.setElements(\"hide\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\/\/end ove image\n\n\n\n\n\n\t\t\t\tif(self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomWindow.mouseenter(function(){\n\t\t\t\t\t\tself.overWindow = true;   \n\t\t\t\t\t\tself.setElements(\"hide\");                  \n\t\t\t\t\t}).mouseleave(function(){\n\n\t\t\t\t\t\tself.overWindow = false;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\/\/end ove image\n\n\n\n\/\/\t\t\t\tvar delta = parseInt(e.originalEvent.wheelDelta || -e.originalEvent.detail);\n\n\t\t\t\t\/\/      $(this).empty();    \n\t\t\t\t\/\/    return false;\n\n\t\t\t\t\/\/fix for initial zoom setting\n\t\t\t\tif (self.options.zoomLevel != 1){\n\t\t\t\t\t\/\/\tself.changeZoomLevel(self.currentZoomLevel);\n\t\t\t\t}\n\t\t\t\t\/\/set the min zoomlevel\n\t\t\t\tif(self.options.minZoomLevel){\n\t\t\t\t\tself.minZoomLevel = self.options.minZoomLevel;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tself.minZoomLevel = self.options.scrollZoomIncrement * 2;\n\t\t\t\t}\n\n\n\t\t\t\tif(self.options.scrollZoom){\n\n\n\t\t\t\t\tself.zoomContainer.add(self.$elem).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function(e){\n\n\n\/\/\t\t\t\t\t\tin IE there is issue with firing of mouseleave - So check whether still scrolling\n\/\/\t\t\t\t\t\tand on mouseleave check if scrolllock          \n\t\t\t\t\t\tself.scrollLock = true;\n\t\t\t\t\t\tclearTimeout($.data(this, 'timer'));\n\t\t\t\t\t\t$.data(this, 'timer', setTimeout(function() {\n\t\t\t\t\t\t\tself.scrollLock = false;\n\t\t\t\t\t\t\t\/\/do something\n\t\t\t\t\t\t}, 250));\n\n\t\t\t\t\t\tvar theEvent = e.originalEvent.wheelDelta || e.originalEvent.detail*-1\n\n\n\t\t\t\t\t\t\/\/this.scrollTop += ( delta \u003c 0 ? 1 : -1 ) * 30;\n\t\t\t\t\t\t\/\/   e.preventDefault();\n\n\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\n\t\t\t\t\t\tif(theEvent \/120 \u003e 0) {\n\t\t\t\t\t\t\t\/\/scrolling up\n\t\t\t\t\t\t\tif(self.currentZoomLevel \u003e= self.minZoomLevel){ \n\t\t\t\t\t\t\t\tself.changeZoomLevel(self.currentZoomLevel-self.options.scrollZoomIncrement);        \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\/\/scrolling down\n\n\n\t\t\t\t\t\t\tif(self.options.maxZoomLevel){\n\t\t\t\t\t\t\t\tif(self.currentZoomLevel \u003c= self.options.maxZoomLevel){           \n\t\t\t\t\t\t\t\t\tself.changeZoomLevel(parseFloat(self.currentZoomLevel)+self.options.scrollZoomIncrement);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\/\/andy \n\n\t\t\t\t\t\t\t\tself.changeZoomLevel(parseFloat(self.currentZoomLevel)+self.options.scrollZoomIncrement);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\n\t\t\t},\n\t\t\tsetElements: function(type) {\n\t\t\t\tvar self = this;\n        if(!self.options.zoomEnabled){return false;}\n\t\t\t\tif(type==\"show\"){\n\t\t\t\t\tif(self.isWindowSet){\n\t\t\t\t\t\tif(self.options.zoomType == \"inner\") {self.showHideWindow(\"show\");}\n\t\t\t\t\t\tif(self.options.zoomType == \"window\") {self.showHideWindow(\"show\");}\n\t\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"show\");}\n\t\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {self.showHideTint(\"show\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(type==\"hide\"){\n\t\t\t\t\tif(self.options.zoomType == \"window\") {self.showHideWindow(\"hide\");}\n\t\t\t\t\tif(!self.options.tint) {self.showHideWindow(\"hide\");}\n\t\t\t\t\tif(self.options.showLens) {self.showHideLens(\"hide\");}\n\t\t\t\t\tif(self.options.tint) {\tself.showHideTint(\"hide\");}\n\t\t\t\t}   \n\t\t\t},\n\t\t\tsetPosition: function(e) {\n      \n\t\t\t\tvar self = this;\n        \n        if(!self.options.zoomEnabled){return false;}\n\n\t\t\t\t\/\/recaclc offset each time in case the image moves\n\t\t\t\t\/\/this can be caused by other on page elements\n\t\t\t\tself.nzHeight = self.$elem.height();\n\t\t\t\tself.nzWidth = self.$elem.width();\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\n\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\tself.zoomTint.css({ top: 0});\n\t\t\t\t\tself.zoomTint.css({ left: 0});\n\t\t\t\t}\n\t\t\t\t\/\/set responsive       \n\t\t\t\t\/\/will checking if the image needs changing before running this code work faster?\n\t\t\t\tif(self.options.responsive \u0026\u0026 !self.options.scrollZoom){\n\t\t\t\t\tif(self.options.showLens){ \n\t\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\t\tlensHeight = self.nzHeight;              \n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.largeWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t\t}       \n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.widthRatio = self.largeWidth \/ self.nzWidth;\n\t\t\t\t\t\tself.heightRatio = self.largeHeight \/ self.nzHeight;        \n\t\t\t\t\t\tif(self.options.zoomType != \"lens\") {\n\n\n\t\t\t\t\t\t\t\/\/possibly dont need to keep recalcalculating\n\t\t\t\t\t\t\t\/\/if the lens is heigher than the image, then set lens size to image size\n\t\t\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\t\t\tlensHeight = self.nzHeight;  \n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(self.options.zoomWindowWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t\t\t}       \n\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t\t\t}            \n\n\t\t\t\t\t\t\tself.zoomLens.css('width', lensWidth);    \n\t\t\t\t\t\t\tself.zoomLens.css('height', lensHeight); \n\n\t\t\t\t\t\t\tif(self.options.tint){    \n\t\t\t\t\t\t\t\tself.zoomTintImage.css('width', self.nzWidth);    \n\t\t\t\t\t\t\t\tself.zoomTintImage.css('height', self.nzHeight); \n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}                     \n\t\t\t\t\t\tif(self.options.zoomType == \"lens\") {  \n\n\t\t\t\t\t\t\tself.zoomLens.css({ width: String(self.options.lensSize) + 'px', height: String(self.options.lensSize) + 'px' })      \n\n\n\t\t\t\t\t\t}        \n\t\t\t\t\t\t\/\/end responsive image change\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t\/\/container fix\n\t\t\t\tself.zoomContainer.css({ top: self.nzOffset.top});\n\t\t\t\tself.zoomContainer.css({ left: self.nzOffset.left});\n\t\t\t\tself.mouseLeft = parseInt(e.pageX - self.nzOffset.left);\n\t\t\t\tself.mouseTop = parseInt(e.pageY - self.nzOffset.top);\n\t\t\t\t\/\/calculate the Location of the Lens\n\n\t\t\t\t\/\/calculate the bound regions - but only if zoom window\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.Etoppos = (self.mouseTop \u003c (self.zoomLens.height()\/2));\n\t\t\t\t\tself.Eboppos = (self.mouseTop \u003e self.nzHeight - (self.zoomLens.height()\/2)-(self.options.lensBorderSize*2));\n\t\t\t\t\tself.Eloppos = (self.mouseLeft \u003c 0+((self.zoomLens.width()\/2))); \n\t\t\t\t\tself.Eroppos = (self.mouseLeft \u003e (self.nzWidth - (self.zoomLens.width()\/2)-(self.options.lensBorderSize*2)));  \n\t\t\t\t}\n\t\t\t\t\/\/calculate the bound regions - but only for inner zoom\n\t\t\t\tif(self.options.zoomType == \"inner\"){ \n\t\t\t\t\tself.Etoppos = (self.mouseTop \u003c ((self.nzHeight\/2)\/self.heightRatio) );\n\t\t\t\t\tself.Eboppos = (self.mouseTop \u003e (self.nzHeight - ((self.nzHeight\/2)\/self.heightRatio)));\n\t\t\t\t\tself.Eloppos = (self.mouseLeft \u003c 0+(((self.nzWidth\/2)\/self.widthRatio)));\n\t\t\t\t\tself.Eroppos = (self.mouseLeft \u003e (self.nzWidth - (self.nzWidth\/2)\/self.widthRatio-(self.options.lensBorderSize*2)));  \n\t\t\t\t}\n\n\t\t\t\t\/\/ if the mouse position of the slider is one of the outerbounds, then hide  window and lens\n\t\t\t\tif (self.mouseLeft \u003c= 0 || self.mouseTop \u003c 0 || self.mouseLeft \u003e self.nzWidth || self.mouseTop \u003e self.nzHeight ) {\t\t\t\t          \n\t\t\t\t\tself.setElements(\"hide\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t\/\/else continue with operations\n\t\t\t\telse {\n\n\n\t\t\t\t\t\/\/lens options\n\t\t\t\t\tif(self.options.showLens) {\n\t\t\t\t\t\t\/\/\t\tself.showHideLens(\"show\");\n\t\t\t\t\t\t\/\/set background position of lens\n\t\t\t\t\t\tself.lensLeftPos = String(self.mouseLeft - self.zoomLens.width() \/ 2);\n\t\t\t\t\t\tself.lensTopPos = String(self.mouseTop - self.zoomLens.height() \/ 2);\n\n\n\t\t\t\t\t}\n\t\t\t\t\t\/\/adjust the background position if the mouse is in one of the outer regions \n\n\t\t\t\t\t\/\/Top region\n\t\t\t\t\tif(self.Etoppos){\n\t\t\t\t\t\tself.lensTopPos = 0;\n\t\t\t\t\t}\n\t\t\t\t\t\/\/Left Region\n\t\t\t\t\tif(self.Eloppos){\n\t\t\t\t\t\tself.windowLeftPos = 0;\n\t\t\t\t\t\tself.lensLeftPos = 0;\n\t\t\t\t\t\tself.tintpos=0;\n\t\t\t\t\t}     \n\t\t\t\t\t\/\/Set bottom and right region for window mode\n\t\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\t\tif(self.Eboppos){\n\t\t\t\t\t\t\tself.lensTopPos = Math.max( (self.nzHeight)-self.zoomLens.height()-(self.options.lensBorderSize*2), 0 );\n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.Eroppos){\n\t\t\t\t\t\t\tself.lensLeftPos = (self.nzWidth-(self.zoomLens.width())-(self.options.lensBorderSize*2));\n\t\t\t\t\t\t}  \n\t\t\t\t\t}  \n\t\t\t\t\t\/\/Set bottom and right region for inner mode\n\t\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\tif(self.Eboppos){\n\t\t\t\t\t\t\tself.lensTopPos = Math.max( ((self.nzHeight)-(self.options.lensBorderSize*2)), 0 );\n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.Eroppos){\n\t\t\t\t\t\t\tself.lensLeftPos = (self.nzWidth-(self.nzWidth)-(self.options.lensBorderSize*2));\n\t\t\t\t\t\t}  \n\n\t\t\t\t\t}\n\t\t\t\t\t\/\/if lens zoom\n\t\t\t\t\tif(self.options.zoomType == \"lens\") {  \n\t\t\t\t\t\tself.windowLeftPos = String(((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomLens.width() \/ 2) * (-1));   \n\t\t\t\t\t\tself.windowTopPos = String(((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomLens.height() \/ 2) * (-1));\n\n\t\t\t\t\t\tself.zoomLens.css({ backgroundPosition: self.windowLeftPos + 'px ' + self.windowTopPos + 'px' });\n\n\t\t\t\t\t\tif(self.changeBgSize){  \n\n\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){  \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){       \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t}   \n\n\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{     \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){       \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });\n\t\t\t\t\t\t\t\t}   \n\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t}    \n\n\t\t\t\t\t\tself.setWindowPostition(e);  \n\t\t\t\t\t}\n\t\t\t\t\t\/\/if tint zoom   \n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\t\tself.setTintPosition(e);\n\n\t\t\t\t\t}\n\t\t\t\t\t\/\/set the css background position \n\t\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\t\tself.setWindowPostition(e);   \n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\t\tself.setWindowPostition(e);   \n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.showLens) {\n\n\t\t\t\t\t\tif(self.fullwidth \u0026\u0026 self.options.zoomType != \"lens\"){\n\t\t\t\t\t\t\tself.lensLeftPos = 0;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.zoomLens.css({ left: self.lensLeftPos + 'px', top: self.lensTopPos + 'px' })  \n\t\t\t\t\t}\n\n\t\t\t\t} \/\/end else\n\n\n\n\t\t\t},\n\t\t\tshowHideWindow: function(change) {\n\t\t\t\tvar self = this;              \n\t\t\t\tif(change == \"show\"){      \n\t\t\t\t\tif(!self.isWindowActive){\n\t\t\t\t\t\tif(self.options.zoomWindowFadeIn){\n\t\t\t\t\t\t\tself.zoomWindow.stop(true, true, false).fadeIn(self.options.zoomWindowFadeIn);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomWindow.show();}\n\t\t\t\t\t\tself.isWindowActive = true;\n\t\t\t\t\t}            \n\t\t\t\t}\n\t\t\t\tif(change == \"hide\"){\n\t\t\t\t\tif(self.isWindowActive){\n\t\t\t\t\t\tif(self.options.zoomWindowFadeOut){\n\t\t\t\t\t\t\tself.zoomWindow.stop(true, true).fadeOut(self.options.zoomWindowFadeOut);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomWindow.hide();}\n\t\t\t\t\t\tself.isWindowActive = false;        \n\t\t\t\t\t}      \n\t\t\t\t}\n\t\t\t},\n\t\t\tshowHideLens: function(change) {\n\t\t\t\tvar self = this;              \n\t\t\t\tif(change == \"show\"){      \n\t\t\t\t\tif(!self.isLensActive){\n\t\t\t\t\t\tif(self.options.lensFadeIn){\n\t\t\t\t\t\t\tself.zoomLens.stop(true, true, false).fadeIn(self.options.lensFadeIn);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomLens.show();}\n\t\t\t\t\t\tself.isLensActive = true;\n\t\t\t\t\t}            \n\t\t\t\t}\n\t\t\t\tif(change == \"hide\"){\n\t\t\t\t\tif(self.isLensActive){\n\t\t\t\t\t\tif(self.options.lensFadeOut){\n\t\t\t\t\t\t\tself.zoomLens.stop(true, true).fadeOut(self.options.lensFadeOut);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomLens.hide();}\n\t\t\t\t\t\tself.isLensActive = false;        \n\t\t\t\t\t}      \n\t\t\t\t}\n\t\t\t},\n\t\t\tshowHideTint: function(change) {\n\t\t\t\tvar self = this;              \n\t\t\t\tif(change == \"show\"){      \n\t\t\t\t\tif(!self.isTintActive){\n\n\t\t\t\t\t\tif(self.options.zoomTintFadeIn){\n\t\t\t\t\t\t\tself.zoomTint.css({opacity:self.options.tintOpacity}).animate().stop(true, true).fadeIn(\"slow\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tself.zoomTint.css({opacity:self.options.tintOpacity}).animate();\n\t\t\t\t\t\t\tself.zoomTint.show();\n\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.isTintActive = true;\n\t\t\t\t\t}            \n\t\t\t\t}\n\t\t\t\tif(change == \"hide\"){      \n\t\t\t\t\tif(self.isTintActive){ \n\n\t\t\t\t\t\tif(self.options.zoomTintFadeOut){\n\t\t\t\t\t\t\tself.zoomTint.stop(true, true).fadeOut(self.options.zoomTintFadeOut);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{self.zoomTint.hide();}\n\t\t\t\t\t\tself.isTintActive = false;        \n\t\t\t\t\t}      \n\t\t\t\t}\n\t\t\t},\n\t\t\tsetLensPostition: function( e ) {\n\n\n\t\t\t},\n\t\t\tsetWindowPostition: function( e ) {\n\t\t\t\t\/\/return obj.slice( 0, count );\n\t\t\t\tvar self = this;\n\n\t\t\t\tif(!isNaN(self.options.zoomWindowPosition)){\n\n\t\t\t\t\tswitch (self.options.zoomWindowPosition) { \n\t\t\t\t\tcase 1: \/\/done         \n\t\t\t\t\t\tself.windowOffsetTop = (self.options.zoomWindowOffety);\/\/DONE - 1\n\t\t\t\t\t\tself.windowOffsetLeft =(+self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\n\t\t\t\t\t\t\tself.windowOffsetTop = ((self.options.zoomWindowHeight\/2)-(self.nzHeight\/2))*(-1);\n\t\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3: \/\/done        \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight - self.zoomWindow.height() - (self.options.borderSize*2)); \/\/DONE 3,9\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;      \n\t\t\t\t\tcase 4: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight); \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight); \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth-self.zoomWindow.width()-(self.options.borderSize*2)); \/\/DONE - 5,15\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6: \n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\t\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight);  \/\/DONE - 4,5,6,7,8\n\n\t\t\t\t\t\t\tself.windowOffsetLeft =((self.options.zoomWindowWidth\/2)-(self.nzWidth\/2)+(self.options.borderSize*2))*(-1);  \n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight);  \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft = 0; \/\/DONE 7, 13\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight); \/\/DONE - 4,5,6,7,8\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 9:  \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.nzHeight - self.zoomWindow.height() - (self.options.borderSize*2)); \/\/DONE 3,9\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 10: \n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\n\t\t\t\t\t\t\tself.windowOffsetTop = ((self.options.zoomWindowHeight\/2)-(self.nzHeight\/2))*(-1);\n\t\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 11: \n\t\t\t\t\t\tself.windowOffsetTop = (self.options.zoomWindowOffety);\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 12: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(self.zoomWindow.width()+(self.options.borderSize*2) )* (-1);  \/\/DONE 8,9,10,11,12\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 13: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(0); \/\/DONE 7, 13\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 14: \n\t\t\t\t\t\tif(self.options.zoomWindowHeight \u003e self.nzHeight){ \/\/positive margin\n\t\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\n\t\t\t\t\t\t\tself.windowOffsetLeft =((self.options.zoomWindowWidth\/2)-(self.nzWidth\/2)+(self.options.borderSize*2))*(-1);  \n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ \/\/negative margin\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 15:\/\/done   \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth-self.zoomWindow.width()-(self.options.borderSize*2)); \/\/DONE - 5,15\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 16:  \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.zoomWindow.height()+(self.options.borderSize*2))*(-1); \/\/DONE 12,13,14,15,16\n\t\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t\tbreak;            \n\t\t\t\t\tdefault: \/\/done  \n\t\t\t\t\t\tself.windowOffsetTop = (self.options.zoomWindowOffety);\/\/DONE - 1\n\t\t\t\t\tself.windowOffsetLeft =(self.nzWidth); \/\/DONE 1, 2, 3, 4, 16\n\t\t\t\t\t} \n\t\t\t\t} \/\/end isNAN\n\t\t\t\telse{\n\t\t\t\t\t\/\/WE CAN POSITION IN A CLASS - ASSUME THAT ANY STRING PASSED IS\n\t\t\t\t\tself.externalContainer = $('#'+self.options.zoomWindowPosition);\n\t\t\t\t\tself.externalContainerWidth = self.externalContainer.width();\n\t\t\t\t\tself.externalContainerHeight = self.externalContainer.height();\n\t\t\t\t\tself.externalContainerOffset = self.externalContainer.offset();\n\n\t\t\t\t\tself.windowOffsetTop = self.externalContainerOffset.top;\/\/DONE - 1\n\t\t\t\t\tself.windowOffsetLeft =self.externalContainerOffset.left; \/\/DONE 1, 2, 3, 4, 16\n\n\t\t\t\t}\n\t\t\t\tself.isWindowSet = true;\n\t\t\t\tself.windowOffsetTop = self.windowOffsetTop + self.options.zoomWindowOffety;\n\t\t\t\tself.windowOffsetLeft = self.windowOffsetLeft + self.options.zoomWindowOffetx;\n\n\t\t\t\tself.zoomWindow.css({ top: self.windowOffsetTop});\n\t\t\t\tself.zoomWindow.css({ left: self.windowOffsetLeft});\n\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.css({ top: 0});\n\t\t\t\t\tself.zoomWindow.css({ left: 0});\n\n\t\t\t\t}   \n\n\n\t\t\t\tself.windowLeftPos = String(((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomWindow.width() \/ 2) * (-1));   \n\t\t\t\tself.windowTopPos = String(((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomWindow.height() \/ 2) * (-1));\n\t\t\t\tif(self.Etoppos){self.windowTopPos = 0;}\n\t\t\t\tif(self.Eloppos){self.windowLeftPos = 0;}     \n\t\t\t\tif(self.Eboppos){self.windowTopPos = (self.largeHeight\/self.currentZoomLevel-self.zoomWindow.height())*(-1);  } \n\t\t\t\tif(self.Eroppos){self.windowLeftPos = ((self.largeWidth\/self.currentZoomLevel-self.zoomWindow.width())*(-1));}    \n\n\t\t\t\t\/\/stops micro movements\n\t\t\t\tif(self.fullheight){\n\t\t\t\t\tself.windowTopPos = 0;\n\n\t\t\t\t}\n\t\t\t\tif(self.fullwidth){\n\t\t\t\t\tself.windowLeftPos = 0;\n\n\t\t\t\t}\n\t\t\t\t\/\/set the css background position \n\n\n\t\t\t\tif(self.options.zoomType == \"window\" || self.options.zoomType == \"inner\") {\n\n\t\t\t\t\tif(self.zoomLock == 1){\n\t\t\t\t\t\t\/\/overrides for images not zoomable\n\t\t\t\t\t\tif(self.widthRatio \u003c= 1){\n\n\t\t\t\t\t\t\tself.windowLeftPos = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.heightRatio \u003c= 1){ \n\t\t\t\t\t\t\tself.windowTopPos = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\/\/ adjust images less than the window height\n\n\t\t\t\t\tif(self.largeHeight \u003c self.options.zoomWindowHeight){\n\n\t\t\t\t\t\tself.windowTopPos = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(self.largeWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\tself.windowLeftPos = 0;\n\t\t\t\t\t}       \n\n\t\t\t\t\t\/\/set the zoomwindow background position\n\t\t\t\t\tif (self.options.easing){\n\n\t\t\t\t\t\t\/\/     if(self.changeZoom){\n\t\t\t\t\t\t\/\/           clearInterval(self.loop);\n\t\t\t\t\t\t\/\/           self.changeZoom = false;\n\t\t\t\t\t\t\/\/           self.loop = false;\n\n\t\t\t\t\t\t\/\/            }\n\t\t\t\t\t\t\/\/set the pos to 0 if not set\n\t\t\t\t\t\tif(!self.xp){self.xp = 0;}\n\t\t\t\t\t\tif(!self.yp){self.yp = 0;}  \n\t\t\t\t\t\t\/\/if loop not already started, then run it \n\t\t\t\t\t\tif (!self.loop){           \n\t\t\t\t\t\t\tself.loop = setInterval(function(){                \n\t\t\t\t\t\t\t\t\/\/using zeno's paradox    \n\n\t\t\t\t\t\t\t\tself.xp += (self.windowLeftPos  - self.xp) \/ self.options.easingAmount; \n\t\t\t\t\t\t\t\tself.yp += (self.windowTopPos  - self.yp) \/ self.options.easingAmount;\n\t\t\t\t\t\t\t\tif(self.scrollingLock){\n\n\n\t\t\t\t\t\t\t\t\tclearInterval(self.loop);\n\t\t\t\t\t\t\t\t\tself.xp = self.windowLeftPos;\n\t\t\t\t\t\t\t\t\tself.yp = self.windowTopPos            \n\n\t\t\t\t\t\t\t\t\tself.xp = ((e.pageX - self.nzOffset.left) * self.widthRatio - self.zoomWindow.width() \/ 2) * (-1);\n\t\t\t\t\t\t\t\t\tself.yp = (((e.pageY - self.nzOffset.top) * self.heightRatio - self.zoomWindow.height() \/ 2) * (-1));                         \n\n\t\t\t\t\t\t\t\t\tif(self.changeBgSize){    \n\t\t\t\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){  \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}   \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse{   \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType != \"lens\"){      \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}            \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\/*\n             if(!self.bgxp){self.bgxp = self.largeWidth\/self.newvalue;}\n\t\t\t\t\t\tif(!self.bgyp){self.bgyp = self.largeHeight\/self.newvalue ;}  \n                 if (!self.bgloop){   \n                 \tself.bgloop = setInterval(function(){   \n\n                 self.bgxp += (self.largeWidth\/self.newvalue  - self.bgxp) \/ self.options.easingAmount; \n\t\t\t\t\t\t\t\tself.bgyp += (self.largeHeight\/self.newvalue  - self.bgyp) \/ self.options.easingAmount;\n\n           self.zoomWindow.css({ \"background-size\": self.bgxp + 'px ' + self.bgyp + 'px' });\n\n\n                  }, 16);\n\n                 }\n\t\t\t\t\t\t\t\t\t\t *\/\n\t\t\t\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ backgroundPosition: self.windowLeftPos + 'px ' + self.windowTopPos + 'px' });\n\t\t\t\t\t\t\t\t\tself.scrollingLock = false;\n\t\t\t\t\t\t\t\t\tself.loop = false;\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t\t\tif(self.changeBgSize){    \n\t\t\t\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){ \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}         \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse{                 \n\t\t\t\t\t\t\t\t\t\t\tif(self.options.zoomType != \"lens\"){     \n\t\t\t\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });\n\t\t\t\t\t\t\t\t\t\t\t}      \n\t\t\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t\t\t\t}                   \n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ backgroundPosition: self.xp + 'px ' + self.yp + 'px' });\n\t\t\t\t\t\t\t\t}       \n\t\t\t\t\t\t\t}, 16);\n\t\t\t\t\t\t}\n\t\t\t\t\t}   \n\t\t\t\t\telse{    \n\t\t\t\t\t\tif(self.changeBgSize){  \n\t\t\t\t\t\t\tif(self.nzHeight\u003eself.nzWidth){  \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t\t} \n\n\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse{     \n\t\t\t\t\t\t\t\tif(self.options.zoomType == \"lens\"){      \n\t\t\t\t\t\t\t\t\tself.zoomLens.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });\n\t\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\t\tif((self.largeHeight\/self.newvaluewidth) \u003c self.options.zoomWindowHeight){ \n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvaluewidth + 'px ' + self.largeHeight\/self.newvaluewidth + 'px' });            \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse{\n\n\t\t\t\t\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth\/self.newvalueheight + 'px ' + self.largeHeight\/self.newvalueheight + 'px' });   \n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.changeBgSize = false;\n\t\t\t\t\t\t}     \n\n\t\t\t\t\t\tself.zoomWindow.css({ backgroundPosition: self.windowLeftPos + 'px ' + self.windowTopPos + 'px' });       \n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t},\n\t\t\tsetTintPosition: function(e){\n\t\t\t\tvar self = this;\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\t\t\t\tself.tintpos = String(((e.pageX - self.nzOffset.left)-(self.zoomLens.width() \/ 2)) * (-1)); \n\t\t\t\tself.tintposy = String(((e.pageY - self.nzOffset.top) - self.zoomLens.height() \/ 2) * (-1));\t\n\t\t\t\tif(self.Etoppos){\n\t\t\t\t\tself.tintposy = 0;\n\t\t\t\t}\n\t\t\t\tif(self.Eloppos){\n\t\t\t\t\tself.tintpos=0;\n\t\t\t\t}     \n\t\t\t\tif(self.Eboppos){\n\t\t\t\t\tself.tintposy = (self.nzHeight-self.zoomLens.height()-(self.options.lensBorderSize*2))*(-1);\n\t\t\t\t} \n\t\t\t\tif(self.Eroppos){\n\t\t\t\t\tself.tintpos = ((self.nzWidth-self.zoomLens.width()-(self.options.lensBorderSize*2))*(-1));\n\t\t\t\t}    \n\t\t\t\tif(self.options.tint) {\n\t\t\t\t\t\/\/stops micro movements\n\t\t\t\t\tif(self.fullheight){\n\t\t\t\t\t\tself.tintposy = 0;\n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.fullwidth){ \n\t\t\t\t\t\tself.tintpos = 0;\n\n\t\t\t\t\t}   \n\t\t\t\t\tself.zoomTintImage.css({'left': self.tintpos+'px'});\n\t\t\t\t\tself.zoomTintImage.css({'top': self.tintposy+'px'});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tswaptheimage: function(smallimage, largeimage){\n\t\t\t\tvar self = this;\n\t\t\t\tvar newImg = new Image(); \n\n\t\t\t\tif(self.options.loadingIcon){\n\t\t\t\t\tself.spinner = $('\u003cdiv style=\"background: url(\\''+self.options.loadingIcon+'\\') no-repeat center;height:'+self.nzHeight+'px;width:'+self.nzWidth+'px;z-index: 2000;position: absolute; background-position: center center;\"\u003e\u003c\/div\u003e');\n\t\t\t\t\tself.$elem.after(self.spinner);\n\t\t\t\t}\n\n\t\t\t\tself.options.onImageSwap(self.$elem);\n\n\t\t\t\tnewImg.onload = function() {\n\t\t\t\t\tself.largeWidth = newImg.width;\n\t\t\t\t\tself.largeHeight = newImg.height;\n\t\t\t\t\tself.zoomImage = largeimage;\n\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth + 'px ' + self.largeHeight + 'px' });\n\t\t\t\t\tself.zoomWindow.css({ \"background-size\": self.largeWidth + 'px ' + self.largeHeight + 'px' });\n\n\n\t\t\t\t\tself.swapAction(smallimage, largeimage);\n\t\t\t\t\treturn;              \n\t\t\t\t}          \n\t\t\t\tnewImg.src = largeimage; \/\/ this must be done AFTER setting onload\n\n\t\t\t},\n\t\t\tswapAction: function(smallimage, largeimage){\n\n\n\t\t\t\tvar self = this;    \n\n\t\t\t\tvar newImg2 = new Image(); \n\t\t\t\tnewImg2.onload = function() {\n\t\t\t\t\t\/\/re-calculate values\n\t\t\t\t\tself.nzHeight = newImg2.height;\n\t\t\t\t\tself.nzWidth = newImg2.width;\n\t\t\t\t\tself.options.onImageSwapComplete(self.$elem);\n\n\t\t\t\t\tself.doneCallback();  \n\t\t\t\t\treturn;      \n\t\t\t\t}          \n\t\t\t\tnewImg2.src = smallimage; \n\n\t\t\t\t\/\/reset the zoomlevel to that initially set in options\n\t\t\t\tself.currentZoomLevel = self.options.zoomLevel;\n\t\t\t\tself.options.maxZoomLevel = false;\n\n\t\t\t\t\/\/swaps the main image\n\t\t\t\t\/\/self.$elem.attr(\"src\",smallimage);\n\t\t\t\t\/\/swaps the zoom image     \n\t\t\t\tif(self.options.zoomType == \"lens\") {\n\t\t\t\t\tself.zoomLens.css({ backgroundImage: \"url('\" + largeimage + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + largeimage + \"')\" }); \n\t\t\t\t}\n\t\t\t\tif(self.options.zoomType == \"inner\") {\n\t\t\t\t\tself.zoomWindow.css({ backgroundImage: \"url('\" + largeimage + \"')\" }); \n\t\t\t\t} \n\n\n\n\t\t\t\tself.currentImage = largeimage;\n\n\t\t\t\tif(self.options.imageCrossfade){\n\t\t\t\t\tvar oldImg = self.$elem;\n\t\t\t\t\tvar newImg = oldImg.clone();         \n\t\t\t\t\tself.$elem.attr(\"src\",smallimage)\n\t\t\t\t\tself.$elem.after(newImg);\n\t\t\t\t\tnewImg.stop(true).fadeOut(self.options.imageCrossfade, function() {\n\t\t\t\t\t\t$(this).remove();         \n\t\t\t\t\t});\n\n\t\t\t\t\t\/\/       \t\t\t\tif(self.options.zoomType == \"inner\"){\n\t\t\t\t\t\/\/remove any attributes on the cloned image so we can resize later\n\t\t\t\t\tself.$elem.width(\"auto\").removeAttr(\"width\");\n\t\t\t\t\tself.$elem.height(\"auto\").removeAttr(\"height\");\n\t\t\t\t\t\/\/   }\n\n\t\t\t\t\toldImg.fadeIn(self.options.imageCrossfade);\n\n\t\t\t\t\tif(self.options.tint \u0026\u0026 self.options.zoomType != \"inner\") {\n\n\t\t\t\t\t\tvar oldImgTint = self.zoomTintImage;\n\t\t\t\t\t\tvar newImgTint = oldImgTint.clone();         \n\t\t\t\t\t\tself.zoomTintImage.attr(\"src\",largeimage)\n\t\t\t\t\t\tself.zoomTintImage.after(newImgTint);\n\t\t\t\t\t\tnewImgTint.stop(true).fadeOut(self.options.imageCrossfade, function() {\n\t\t\t\t\t\t\t$(this).remove();         \n\t\t\t\t\t\t});\n\n\n\n\t\t\t\t\t\toldImgTint.fadeIn(self.options.imageCrossfade);\n\n\n\t\t\t\t\t\t\/\/self.zoomTintImage.attr(\"width\",elem.data(\"image\"));\n\n\t\t\t\t\t\t\/\/resize the tint window\n\t\t\t\t\t\tself.zoomTint.css({ height: self.$elem.height()});\n\t\t\t\t\t\tself.zoomTint.css({ width: self.$elem.width()});\n\t\t\t\t\t}    \n\n\t\t\t\t\tself.zoomContainer.css(\"height\", self.$elem.height());\n\t\t\t\t\tself.zoomContainer.css(\"width\", self.$elem.width());\n\n\t\t\t\t\tif(self.options.zoomType == \"inner\"){ \n\t\t\t\t\t\tif(!self.options.constrainType){\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"height\", self.$elem.height());\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"width\", self.$elem.width());\n\n\t\t\t\t\t\t\tself.zoomWindow.css(\"height\", self.$elem.height());\n\t\t\t\t\t\t\tself.zoomWindow.css(\"width\", self.$elem.width());\n\t\t\t\t\t\t}\n\t\t\t\t\t} \n\n\t\t\t\t\tif(self.options.imageCrossfade){  \n\t\t\t\t\t\tself.zoomWrap.css(\"height\", self.$elem.height());\n\t\t\t\t\t\tself.zoomWrap.css(\"width\", self.$elem.width());\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tself.$elem.attr(\"src\",smallimage); \n\t\t\t\t\tif(self.options.tint) {\n\t\t\t\t\t\tself.zoomTintImage.attr(\"src\",largeimage);\n\t\t\t\t\t\t\/\/self.zoomTintImage.attr(\"width\",elem.data(\"image\"));\n\t\t\t\t\t\tself.zoomTintImage.attr(\"height\",self.$elem.height());\n\t\t\t\t\t\t\/\/self.zoomTintImage.attr('src') = elem.data(\"image\");\n\t\t\t\t\t\tself.zoomTintImage.css({ height: self.$elem.height()}); \n\t\t\t\t\t\tself.zoomTint.css({ height: self.$elem.height()});\n\n\t\t\t\t\t}\n\t\t\t\t\tself.zoomContainer.css(\"height\", self.$elem.height());\n\t\t\t\t\tself.zoomContainer.css(\"width\", self.$elem.width());\n\n\t\t\t\t\tif(self.options.imageCrossfade){  \n\t\t\t\t\t\tself.zoomWrap.css(\"height\", self.$elem.height());\n\t\t\t\t\t\tself.zoomWrap.css(\"width\", self.$elem.width());\n\t\t\t\t\t} \n\t\t\t\t}              \n\t\t\t\tif(self.options.constrainType){     \n\n\t\t\t\t\t\/\/This will contrain the image proportions\n\t\t\t\t\tif(self.options.constrainType == \"height\"){ \n\n\t\t\t\t\t\tself.zoomContainer.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\tself.zoomContainer.css(\"width\", \"auto\");\n\n\t\t\t\t\t\tif(self.options.imageCrossfade){  \n\t\t\t\t\t\t\tself.zoomWrap.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomWrap.css(\"width\", \"auto\"); \n\t\t\t\t\t\t\tself.constwidth = self.zoomWrap.width();\n\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{                  \n\t\t\t\t\t\t\tself.$elem.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.$elem.css(\"width\", \"auto\");\n\t\t\t\t\t\t\tself.constwidth = self.$elem.width();\n\t\t\t\t\t\t} \n\n\t\t\t\t\t\tif(self.options.zoomType == \"inner\"){\n\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"width\", self.constwidth);   \n\t\t\t\t\t\t\tself.zoomWindow.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomWindow.css(\"width\", self.constwidth);    \n\t\t\t\t\t\t}        \n\t\t\t\t\t\tif(self.options.tint){\n\t\t\t\t\t\t\tself.tintContainer.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.tintContainer.css(\"width\", self.constwidth);\n\t\t\t\t\t\t\tself.zoomTint.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTint.css(\"width\", self.constwidth);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"height\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"width\", self.constwidth); \n\t\t\t\t\t\t} \n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.constrainType == \"width\"){       \n\t\t\t\t\t\tself.zoomContainer.css(\"height\", \"auto\");\n\t\t\t\t\t\tself.zoomContainer.css(\"width\", self.options.constrainSize);\n\n\t\t\t\t\t\tif(self.options.imageCrossfade){\n\t\t\t\t\t\t\tself.zoomWrap.css(\"height\", \"auto\");\n\t\t\t\t\t\t\tself.zoomWrap.css(\"width\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.constheight = self.zoomWrap.height();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{            \n\t\t\t\t\t\t\tself.$elem.css(\"height\", \"auto\");\n\t\t\t\t\t\t\tself.$elem.css(\"width\", self.options.constrainSize); \n\t\t\t\t\t\t\tself.constheight = self.$elem.height();              \n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.options.zoomType == \"inner\"){\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomWrap.parent().css(\"width\", self.options.constrainSize);   \n\t\t\t\t\t\t\tself.zoomWindow.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomWindow.css(\"width\", self.options.constrainSize);    \n\t\t\t\t\t\t} \n\t\t\t\t\t\tif(self.options.tint){\n\t\t\t\t\t\t\tself.tintContainer.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.tintContainer.css(\"width\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTint.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomTint.css(\"width\", self.options.constrainSize);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"height\", self.constheight);\n\t\t\t\t\t\t\tself.zoomTintImage.css(\"width\", self.options.constrainSize); \n\t\t\t\t\t\t}   \n\n\t\t\t\t\t}        \n\n\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tdoneCallback: function(){\n\n\t\t\t\tvar self = this;\n\t\t\t\tif(self.options.loadingIcon){\n\t\t\t\t\tself.spinner.hide();     \n\t\t\t\t}   \n\n\t\t\t\tself.nzOffset = self.$elem.offset();\n\t\t\t\tself.nzWidth = self.$elem.width();\n\t\t\t\tself.nzHeight = self.$elem.height();\n\n\t\t\t\t\/\/ reset the zoomlevel back to default\n\t\t\t\tself.currentZoomLevel = self.options.zoomLevel;\n\n\t\t\t\t\/\/ratio of the large to small image\n\t\t\t\tself.widthRatio = self.largeWidth \/ self.nzWidth;\n\t\t\t\tself.heightRatio = self.largeHeight \/ self.nzHeight; \n\n\t\t\t\t\/\/NEED TO ADD THE LENS SIZE FOR ROUND\n\t\t\t\t\/\/ adjust images less than the window height\n\t\t\t\tif(self.options.zoomType == \"window\") {\n\n\t\t\t\t\tif(self.nzHeight \u003c self.options.zoomWindowWidth\/self.widthRatio){\n\t\t\t\t\t\tlensHeight = self.nzHeight;  \n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tlensHeight = String((self.options.zoomWindowHeight\/self.heightRatio))\n\t\t\t\t\t}\n\n\t\t\t\t\tif(self.options.zoomWindowWidth \u003c self.options.zoomWindowWidth){\n\t\t\t\t\t\tlensWidth = self.nzWidth;\n\t\t\t\t\t}       \n\t\t\t\t\telse{\n\t\t\t\t\t\tlensWidth =  (self.options.zoomWindowWidth\/self.widthRatio);\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif(self.zoomLens){\n\n\t\t\t\t\t\tself.zoomLens.css('width', lensWidth);    \n\t\t\t\t\t\tself.zoomLens.css('height', lensHeight); \n\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetCurrentImage: function(){\n\t\t\t\tvar self = this;  \n\t\t\t\treturn self.zoomImage; \n\t\t\t}, \n\t\t\tgetGalleryList: function(){\n\t\t\t\tvar self = this;   \n\t\t\t\t\/\/loop through the gallery options and set them in list for fancybox\n\t\t\t\tself.gallerylist = [];\n\t\t\t\tif (self.options.gallery){ \n\n\n\t\t\t\t\t$('#'+self.options.gallery + ' a').each(function() {\n\n\t\t\t\t\t\tvar img_src = '';\n\t\t\t\t\t\tif($(this).data(\"zoom-image\")){\n\t\t\t\t\t\t\timg_src = $(this).data(\"zoom-image\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if($(this).data(\"image\")){\n\t\t\t\t\t\t\timg_src = $(this).data(\"image\");\n\t\t\t\t\t\t}\t\t\t\n\t\t\t\t\t\t\/\/put the current image at the start\n\t\t\t\t\t\tif(img_src == self.zoomImage){\n\t\t\t\t\t\t\tself.gallerylist.unshift({\n\t\t\t\t\t\t\t\thref: ''+img_src+'',\n\t\t\t\t\t\t\t\ttitle: $(this).find('img').attr(\"title\")\n\t\t\t\t\t\t\t});\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tself.gallerylist.push({\n\t\t\t\t\t\t\t\thref: ''+img_src+'',\n\t\t\t\t\t\t\t\ttitle: $(this).find('img').attr(\"title\")\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t});\n\t\t\t\t}                                                       \n\t\t\t\t\/\/if no gallery - return current image\n\t\t\t\telse{\n\t\t\t\t\tself.gallerylist.push({\n\t\t\t\t\t\thref: ''+self.zoomImage+'',\n\t\t\t\t\t\ttitle: $(this).find('img').attr(\"title\")\n\t\t\t\t\t}); \n\t\t\t\t}\n\t\t\t\treturn self.gallerylist;\n\n\t\t\t},\n\t\t\tchangeZoomLevel: function(value){\n\t\t\t\tvar self = this;   \n\n\t\t\t\t\/\/flag a zoom, so can adjust the easing during setPosition     \n\t\t\t\tself.scrollingLock = true;   \n\n\t\t\t\t\/\/round to two decimal places\n\t\t\t\tself.newvalue = parseFloat(value).toFixed(2);\n\t\t\t\tnewvalue = parseFloat(value).toFixed(2);\n\n\n\n\n\t\t\t\t\/\/maxwidth \u0026 Maxheight of the image\n\t\t\t\tmaxheightnewvalue = self.largeHeight\/((self.options.zoomWindowHeight \/ self.nzHeight) * self.nzHeight);     \n\t\t\t\tmaxwidthtnewvalue = self.largeWidth\/((self.options.zoomWindowWidth \/ self.nzWidth) * self.nzWidth);   \t\n\n\n\n\n\t\t\t\t\/\/calculate new heightratio\n\t\t\t\tif(self.options.zoomType != \"inner\")\n\t\t\t\t{\n\t\t\t\t\tif(maxheightnewvalue \u003c= newvalue){\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/maxheightnewvalue) \/ self.nzHeight;\n\t\t\t\t\t\tself.newvalueheight = maxheightnewvalue;\n\t\t\t\t\t\tself.fullheight = true;\n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/newvalue) \/ self.nzHeight; \n\t\t\t\t\t\tself.newvalueheight = newvalue;\n\t\t\t\t\t\tself.fullheight = false;\n\n\t\t\t\t\t}\n\n\n\/\/\t\t\t\t\tcalculate new width ratio\n\n\t\t\t\t\tif(maxwidthtnewvalue \u003c= newvalue){\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/maxwidthtnewvalue) \/ self.nzWidth;\n\t\t\t\t\t\tself.newvaluewidth = maxwidthtnewvalue;\n\t\t\t\t\t\tself.fullwidth = true;\n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\t\t\t\t\t\tself.fullwidth = false;\n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.zoomType == \"lens\"){\n\t\t\t\t\t\tif(maxheightnewvalue \u003c= newvalue){\n\t\t\t\t\t\t\tself.fullwidth = true;\n\t\t\t\t\t\t\tself.newvaluewidth = maxheightnewvalue;\n\n\t\t\t\t\t\t} else{\n\t\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\n\t\t\t\t\t\t\tself.fullwidth = false;\n\t\t\t\t\t\t}}\n\t\t\t\t}\n\n\n\n\t\t\t\tif(self.options.zoomType == \"inner\")\n\t\t\t\t{\n\t\t\t\t\tmaxheightnewvalue = parseFloat(self.largeHeight\/self.nzHeight).toFixed(2);     \n\t\t\t\t\tmaxwidthtnewvalue = parseFloat(self.largeWidth\/self.nzWidth).toFixed(2);      \n\t\t\t\t\tif(newvalue \u003e maxheightnewvalue){\n\t\t\t\t\t\tnewvalue = maxheightnewvalue;\n\t\t\t\t\t}\n\t\t\t\t\tif(newvalue \u003e maxwidthtnewvalue){\n\t\t\t\t\t\tnewvalue = maxwidthtnewvalue;\n\t\t\t\t\t}      \n\n\n\t\t\t\t\tif(maxheightnewvalue \u003c= newvalue){\n\n\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/newvalue) \/ self.nzHeight; \n\t\t\t\t\t\tif(newvalue \u003e maxheightnewvalue){\n\t\t\t\t\t\t\tself.newvalueheight = maxheightnewvalue;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tself.newvalueheight = newvalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.fullheight = true;\n\n\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\n\n\n\t\t\t\t\t\tself.heightRatio = (self.largeHeight\/newvalue) \/ self.nzHeight; \n\n\t\t\t\t\t\tif(newvalue \u003e maxheightnewvalue){\n\n\t\t\t\t\t\t\tself.newvalueheight = maxheightnewvalue;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tself.newvalueheight = newvalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.fullheight = false;\n\t\t\t\t\t}\n\n\n\n\n\t\t\t\t\tif(maxwidthtnewvalue \u003c= newvalue){   \n\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\tif(newvalue \u003e maxwidthtnewvalue){\n\n\t\t\t\t\t\t\tself.newvaluewidth = maxwidthtnewvalue;\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.fullwidth = true;\n\n\n\t\t\t\t\t}\n\t\t\t\t\telse{  \n\n\t\t\t\t\t\tself.widthRatio = (self.largeWidth\/newvalue) \/ self.nzWidth; \n\t\t\t\t\t\tself.newvaluewidth = newvalue;\n\t\t\t\t\t\tself.fullwidth = false;\n\t\t\t\t\t}        \n\n\n\t\t\t\t} \/\/end inner\n\t\t\t\tscrcontinue = false;\n\n\t\t\t\tif(self.options.zoomType == \"inner\"){\n\n\t\t\t\t\tif(self.nzWidth \u003e= self.nzHeight){\n\t\t\t\t\t\tif( self.newvaluewidth \u003c= maxwidthtnewvalue){\n\t\t\t\t\t\t\tscrcontinue = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\n\t\t\t\t\t\t\tscrcontinue = false;\n\t\t\t\t\t\t\tself.fullheight = true;\n\t\t\t\t\t\t\tself.fullwidth = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(self.nzHeight \u003e self.nzWidth){     \n\t\t\t\t\t\tif( self.newvaluewidth \u003c= maxwidthtnewvalue){\n\t\t\t\t\t\t\tscrcontinue = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tscrcontinue = false;  \n\n\t\t\t\t\t\t\tself.fullheight = true;\n\t\t\t\t\t\t\tself.fullwidth = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(self.options.zoomType != \"inner\"){\n\t\t\t\t\tscrcontinue = true;\n\t\t\t\t}\n\n\t\t\t\tif(scrcontinue){\n\n\n\n\t\t\t\t\tself.zoomLock = 0;\n\t\t\t\t\tself.changeZoom = true;\n\n\t\t\t\t\t\/\/if lens height is less than image height\n\n\n\t\t\t\t\tif(((self.options.zoomWindowHeight)\/self.heightRatio) \u003c= self.nzHeight){\n\n\n\t\t\t\t\t\tself.currentZoomLevel = self.newvalueheight; \n\t\t\t\t\t\tif(self.options.zoomType != \"lens\" \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\t\t\tself.changeBgSize = true;\n\n\t\t\t\t\t\t\tself.zoomLens.css({height: String((self.options.zoomWindowHeight)\/self.heightRatio) + 'px' }) \n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.options.zoomType == \"lens\" || self.options.zoomType == \"inner\") {  \n\t\t\t\t\t\t\tself.changeBgSize = true;  \n\t\t\t\t\t\t}\t\n\n\n\t\t\t\t\t} \n\n\n\n\n\t\t\t\t\tif((self.options.zoomWindowWidth\/self.widthRatio) \u003c= self.nzWidth){\n\n\n\n\t\t\t\t\t\tif(self.options.zoomType != \"inner\"){\n\t\t\t\t\t\t\tif(self.newvaluewidth \u003e self.newvalueheight)   {\n\t\t\t\t\t\t\t\tself.currentZoomLevel = self.newvaluewidth;                 \n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(self.options.zoomType != \"lens\" \u0026\u0026 self.options.zoomType != \"inner\") {\n\t\t\t\t\t\t\tself.changeBgSize = true;\n\n\t\t\t\t\t\t\tself.zoomLens.css({width: String((self.options.zoomWindowWidth)\/self.widthRatio) + 'px' })\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.options.zoomType == \"lens\" || self.options.zoomType == \"inner\") {  \n\t\t\t\t\t\t\tself.changeBgSize = true;\n\t\t\t\t\t\t}\t\n\n\t\t\t\t\t}\n\t\t\t\t\tif(self.options.zoomType == \"inner\"){\n\t\t\t\t\t\tself.changeBgSize = true;  \n\n\t\t\t\t\t\tif(self.nzWidth \u003e self.nzHeight){\n\t\t\t\t\t\t\tself.currentZoomLevel = self.newvaluewidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.nzHeight \u003e self.nzWidth){\n\t\t\t\t\t\t\tself.currentZoomLevel = self.newvaluewidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}      \/\/under\n\n\t\t\t\t\/\/sets the boundry change, called in setWindowPos\n\t\t\t\tself.setPosition(self.currentLoc);\n\t\t\t\t\/\/\n\t\t\t},\n\t\t\tcloseAll: function(){\n\t\t\t\tif(self.zoomWindow){self.zoomWindow.hide();}\n\t\t\t\tif(self.zoomLens){self.zoomLens.hide();}\n\t\t\t\tif(self.zoomTint){self.zoomTint.hide();}\n\t\t\t},\n\t\t\tchangeState: function(value){\n      \tvar self = this;\n\t\t\t\tif(value == 'enable'){self.options.zoomEnabled = true;}\n\t\t\t\tif(value == 'disable'){self.options.zoomEnabled = false;}\n\n\t\t\t}\n\n\t};\n\n\n\n\n\t$.fn.elevateZoom = function( options ) {\n\t\treturn this.each(function() {\n\t\t\tvar elevate = Object.create( ElevateZoom );\n\n\t\t\televate.init( options, this );\n\n\t\t\t$.data( this, 'elevateZoom', elevate );\n\n\t\t});\n\t};\n\n\t$.fn.elevateZoom.options = {\n\t\t\tzoomActivation: \"hover\", \/\/ Can also be click (PLACEHOLDER FOR NEXT VERSION)\n      zoomEnabled: true, \/\/false disables zoomwindow from showing\n\t\t\tpreloading: 1, \/\/by default, load all the images, if 0, then only load images after activated (PLACEHOLDER FOR NEXT VERSION)\n\t\t\tzoomLevel: 1, \/\/default zoom level of image\n\t\t\tscrollZoom: false, \/\/allow zoom on mousewheel, true to activate\n\t\t\tscrollZoomIncrement: 0.1,  \/\/steps of the scrollzoom\n\t\t\tminZoomLevel: false,\n\t\t\tmaxZoomLevel: false,\n\t\t\teasing: false,\n\t\t\teasingAmount: 12,\n\t\t\tlensSize: 200,\n\t\t\tzoomWindowWidth: 400,\n\t\t\tzoomWindowHeight: 400,\n\t\t\tzoomWindowOffetx: 0,\n\t\t\tzoomWindowOffety: 0,\n\t\t\tzoomWindowPosition: 1,\n\t\t\tzoomWindowBgColour: \"#fff\",\n\t\t\tlensFadeIn: false,\n\t\t\tlensFadeOut: false,\n\t\t\tdebug: false,\n\t\t\tzoomWindowFadeIn: false,\n\t\t\tzoomWindowFadeOut: false,\n\t\t\tzoomWindowAlwaysShow: false,\n\t\t\tzoomTintFadeIn: false,\n\t\t\tzoomTintFadeOut: false,\n\t\t\tborderSize: 4,\n\t\t\tshowLens: true,\n\t\t\tborderColour: \"#888\",\n\t\t\tlensBorderSize: 1,\n\t\t\tlensBorderColour: \"#000\",\n\t\t\tlensShape: \"square\", \/\/can be \"round\"\n\t\t\tzoomType: \"window\", \/\/window is default,  also \"lens\" available -\n\t\t\tcontainLensZoom: false,\n\t\t\tlensColour: \"white\", \/\/colour of the lens background\n\t\t\tlensOpacity: 0.4, \/\/opacity of the lens\n\t\t\tlenszoom: false,\n\t\t\ttint: false, \/\/enable the tinting\n\t\t\ttintColour: \"#333\", \/\/default tint color, can be anything, red, #ccc, rgb(0,0,0)\n\t\t\ttintOpacity: 0.4, \/\/opacity of the tint\n\t\t\tgallery: false,\n\t\t\tgalleryActiveClass: \"zoomGalleryActive\",\n\t\t\timageCrossfade: false,\n\t\t\tconstrainType: false,  \/\/width or height\n\t\t\tconstrainSize: false,  \/\/in pixels the dimensions you want to constrain on\n\t\t\tloadingIcon: false, \/\/http:\/\/www.example.com\/spinner.gif\n\t\t\tcursor:\"default\", \/\/ user should set to what they want the cursor as, if they have set a click function\n\t\t\tresponsive:true,\n\t\t\tonComplete: $.noop,\n\t\t\tonZoomedImageLoaded: function() {},\n\t\t\tonImageSwap: $.noop,\n\t\t\tonImageSwapComplete: $.noop\n\t};\n\n})( jQuery, window, document );\/*!\n * fancyBox - jQuery Plugin\n * version: 2.1.5 (Fri, 14 Jun 2013)\n * @requires jQuery v1.6 or later\n *\n * Examples at http:\/\/fancyapps.com\/fancybox\/\n * License: www.fancyapps.com\/fancybox\/#license\n *\n * Copyright 2012 Janis Skarnelis - janis@fancyapps.com\n *\n *\/\n\n(function (window, document, $, undefined) {\n\t\"use strict\";\n\n\tvar H = $(\"html\"),\n\t\tW = $(window),\n\t\tD = $(document),\n\t\tF = $.fancybox = function () {\n\t\t\tF.open.apply( this, arguments );\n\t\t},\n\t\tIE =  navigator.userAgent.match(\/msie\/i),\n\t\tdidUpdate\t= null,\n\t\tisTouch\t\t= document.createTouch !== undefined,\n\n\t\tisQuery\t= function(obj) {\n\t\t\treturn obj \u0026\u0026 obj.hasOwnProperty \u0026\u0026 obj instanceof $;\n\t\t},\n\t\tisString = function(str) {\n\t\t\treturn str \u0026\u0026 $.type(str) === \"string\";\n\t\t},\n\t\tisPercentage = function(str) {\n\t\t\treturn isString(str) \u0026\u0026 str.indexOf('%') \u003e 0;\n\t\t},\n\t\tisScrollable = function(el) {\n\t\t\treturn (el \u0026\u0026 !(el.style.overflow \u0026\u0026 el.style.overflow === 'hidden') \u0026\u0026 ((el.clientWidth \u0026\u0026 el.scrollWidth \u003e el.clientWidth) || (el.clientHeight \u0026\u0026 el.scrollHeight \u003e el.clientHeight)));\n\t\t},\n\t\tgetScalar = function(orig, dim) {\n\t\t\tvar value = parseInt(orig, 10) || 0;\n\n\t\t\tif (dim \u0026\u0026 isPercentage(orig)) {\n\t\t\t\tvalue = F.getViewport()[ dim ] \/ 100 * value;\n\t\t\t}\n\n\t\t\treturn Math.ceil(value);\n\t\t},\n\t\tgetValue = function(value, dim) {\n\t\t\treturn getScalar(value, dim) + 'px';\n\t\t};\n\n\t$.extend(F, {\n\t\t\/\/ The current version of fancyBox\n\t\tversion: '2.1.5',\n\n\t\tdefaults: {\n\t\t\tpadding : 15,\n\t\t\tmargin  : 20,\n\n\t\t\twidth     : 800,\n\t\t\theight    : 600,\n\t\t\tminWidth  : 100,\n\t\t\tminHeight : 100,\n\t\t\tmaxWidth  : 9999,\n\t\t\tmaxHeight : 9999,\n\t\t\tpixelRatio: 1, \/\/ Set to 2 for retina display support\n\n\t\t\tautoSize   : true,\n\t\t\tautoHeight : false,\n\t\t\tautoWidth  : false,\n\n\t\t\tautoResize  : true,\n\t\t\tautoCenter  : !isTouch,\n\t\t\tfitToView   : true,\n\t\t\taspectRatio : false,\n\t\t\ttopRatio    : 0.5,\n\t\t\tleftRatio   : 0.5,\n\n\t\t\tscrolling : 'auto', \/\/ 'auto', 'yes' or 'no'\n\t\t\twrapCSS   : '',\n\n\t\t\tarrows     : true,\n\t\t\tcloseBtn   : true,\n\t\t\tcloseClick : false,\n\t\t\tnextClick  : false,\n\t\t\tmouseWheel : true,\n\t\t\tautoPlay   : false,\n\t\t\tplaySpeed  : 3000,\n\t\t\tpreload    : 3,\n\t\t\tmodal      : false,\n\t\t\tloop       : true,\n\n\t\t\tajax  : {\n\t\t\t\tdataType : 'html',\n\t\t\t\theaders  : { 'X-fancyBox': true }\n\t\t\t},\n\t\t\tiframe : {\n\t\t\t\tscrolling : 'auto',\n\t\t\t\tpreload   : true\n\t\t\t},\n\t\t\tswf : {\n\t\t\t\twmode: 'transparent',\n\t\t\t\tallowfullscreen   : 'true',\n\t\t\t\tallowscriptaccess : 'always'\n\t\t\t},\n\n\t\t\tkeys  : {\n\t\t\t\tnext : {\n\t\t\t\t\t13 : 'left', \/\/ enter\n\t\t\t\t\t34 : 'up',   \/\/ page down\n\t\t\t\t\t39 : 'left', \/\/ right arrow\n\t\t\t\t\t40 : 'up'    \/\/ down arrow\n\t\t\t\t},\n\t\t\t\tprev : {\n\t\t\t\t\t8  : 'right',  \/\/ backspace\n\t\t\t\t\t33 : 'down',   \/\/ page up\n\t\t\t\t\t37 : 'right',  \/\/ left arrow\n\t\t\t\t\t38 : 'down'    \/\/ up arrow\n\t\t\t\t},\n\t\t\t\tclose  : [27], \/\/ escape key\n\t\t\t\tplay   : [32], \/\/ space - start\/stop slideshow\n\t\t\t\ttoggle : [70]  \/\/ letter \"f\" - toggle fullscreen\n\t\t\t},\n\n\t\t\tdirection : {\n\t\t\t\tnext : 'left',\n\t\t\t\tprev : 'right'\n\t\t\t},\n\n\t\t\tscrollOutside  : true,\n\n\t\t\t\/\/ Override some properties\n\t\t\tindex   : 0,\n\t\t\ttype    : null,\n\t\t\thref    : null,\n\t\t\tcontent : null,\n\t\t\ttitle   : null,\n\n\t\t\t\/\/ HTML templates\n\t\t\ttpl: {\n\t\t\t\twrap     : '\u003cdiv class=\"fancybox-wrap\" tabIndex=\"-1\"\u003e\u003cdiv class=\"fancybox-skin\"\u003e\u003cdiv class=\"fancybox-outer\"\u003e\u003cdiv class=\"fancybox-inner\"\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e',\n\t\t\t\timage    : '\u003cimg class=\"fancybox-image\" src=\"{href}\" alt=\"\" \/\u003e',\n\t\t\t\tiframe   : '\u003ciframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency=\"true\"' : '') + '\u003e\u003c\/iframe\u003e',\n\t\t\t\terror    : '\u003cp class=\"fancybox-error\"\u003eThe requested content cannot be loaded.\u003cbr\/\u003ePlease try again later.\u003c\/p\u003e',\n\t\t\t\tcloseBtn : '\u003ca title=\"Close\" class=\"fancybox-item fancybox-close\" href=\"javascript:;\"\u003e\u003c\/a\u003e',\n\t\t\t\tnext     : '\u003ca title=\"Next\" class=\"fancybox-nav fancybox-next\" href=\"javascript:;\"\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/a\u003e',\n\t\t\t\tprev     : '\u003ca title=\"Previous\" class=\"fancybox-nav fancybox-prev\" href=\"javascript:;\"\u003e\u003cspan\u003e\u003c\/span\u003e\u003c\/a\u003e'\n\t\t\t},\n\n\t\t\t\/\/ Properties for each animation type\n\t\t\t\/\/ Opening fancyBox\n\t\t\topenEffect  : 'fade', \/\/ 'elastic', 'fade' or 'none'\n\t\t\topenSpeed   : 250,\n\t\t\topenEasing  : 'swing',\n\t\t\topenOpacity : true,\n\t\t\topenMethod  : 'zoomIn',\n\n\t\t\t\/\/ Closing fancyBox\n\t\t\tcloseEffect  : 'fade', \/\/ 'elastic', 'fade' or 'none'\n\t\t\tcloseSpeed   : 250,\n\t\t\tcloseEasing  : 'swing',\n\t\t\tcloseOpacity : true,\n\t\t\tcloseMethod  : 'zoomOut',\n\n\t\t\t\/\/ Changing next gallery item\n\t\t\tnextEffect : 'elastic', \/\/ 'elastic', 'fade' or 'none'\n\t\t\tnextSpeed  : 250,\n\t\t\tnextEasing : 'swing',\n\t\t\tnextMethod : 'changeIn',\n\n\t\t\t\/\/ Changing previous gallery item\n\t\t\tprevEffect : 'elastic', \/\/ 'elastic', 'fade' or 'none'\n\t\t\tprevSpeed  : 250,\n\t\t\tprevEasing : 'swing',\n\t\t\tprevMethod : 'changeOut',\n\n\t\t\t\/\/ Enable default helpers\n\t\t\thelpers : {\n\t\t\t\toverlay : true,\n\t\t\t\ttitle   : true\n\t\t\t},\n\n\t\t\t\/\/ Callbacks\n\t\t\tonCancel     : $.noop, \/\/ If canceling\n\t\t\tbeforeLoad   : $.noop, \/\/ Before loading\n\t\t\tafterLoad    : $.noop, \/\/ After loading\n\t\t\tbeforeShow   : $.noop, \/\/ Before changing in current item\n\t\t\tafterShow    : $.noop, \/\/ After opening\n\t\t\tbeforeChange : $.noop, \/\/ Before changing gallery item\n\t\t\tbeforeClose  : $.noop, \/\/ Before closing\n\t\t\tafterClose   : $.noop  \/\/ After closing\n\t\t},\n\n\t\t\/\/Current state\n\t\tgroup    : {}, \/\/ Selected group\n\t\topts     : {}, \/\/ Group options\n\t\tprevious : null,  \/\/ Previous element\n\t\tcoming   : null,  \/\/ Element being loaded\n\t\tcurrent  : null,  \/\/ Currently loaded element\n\t\tisActive : false, \/\/ Is activated\n\t\tisOpen   : false, \/\/ Is currently open\n\t\tisOpened : false, \/\/ Have been fully opened at least once\n\n\t\twrap  : null,\n\t\tskin  : null,\n\t\touter : null,\n\t\tinner : null,\n\n\t\tplayer : {\n\t\t\ttimer    : null,\n\t\t\tisActive : false\n\t\t},\n\n\t\t\/\/ Loaders\n\t\tajaxLoad   : null,\n\t\timgPreload : null,\n\n\t\t\/\/ Some collections\n\t\ttransitions : {},\n\t\thelpers     : {},\n\n\t\t\/*\n\t\t *\tStatic methods\n\t\t *\/\n\n\t\topen: function (group, opts) {\n\t\t\tif (!group) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!$.isPlainObject(opts)) {\n\t\t\t\topts = {};\n\t\t\t}\n\n\t\t\t\/\/ Close if already active\n\t\t\tif (false === F.close(true)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t\/\/ Normalize group\n\t\t\tif (!$.isArray(group)) {\n\t\t\t\tgroup = isQuery(group) ? $(group).get() : [group];\n\t\t\t}\n\n\t\t\t\/\/ Recheck if the type of each element is `object` and set content type (image, ajax, etc)\n\t\t\t$.each(group, function(i, element) {\n\t\t\t\tvar obj = {},\n\t\t\t\t\thref,\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent,\n\t\t\t\t\ttype,\n\t\t\t\t\trez,\n\t\t\t\t\threfParts,\n\t\t\t\t\tselector;\n\n\t\t\t\tif ($.type(element) === \"object\") {\n\t\t\t\t\t\/\/ Check if is DOM element\n\t\t\t\t\tif (element.nodeType) {\n\t\t\t\t\t\telement = $(element);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isQuery(element)) {\n\t\t\t\t\t\tobj = {\n\t\t\t\t\t\t\thref    : element.data('fancybox-href') || element.attr('href'),\n\t\t\t\t\t\t\ttitle   : element.data('fancybox-title') || element.attr('title'),\n\t\t\t\t\t\t\tisDom   : true,\n\t\t\t\t\t\t\telement : element\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif ($.metadata) {\n\t\t\t\t\t\t\t$.extend(true, obj, element.metadata());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tobj = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thref  = opts.href  || obj.href || (isString(element) ? element : null);\n\t\t\t\ttitle = opts.title !== undefined ? opts.title : obj.title || '';\n\n\t\t\t\tcontent = opts.content || obj.content;\n\t\t\t\ttype    = content ? 'html' : (opts.type  || obj.type);\n\n\t\t\t\tif (!type \u0026\u0026 obj.isDom) {\n\t\t\t\t\ttype = element.data('fancybox-type');\n\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\trez  = element.prop('class').match(\/fancybox\\.(\\w+)\/);\n\t\t\t\t\t\ttype = rez ? rez[1] : null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isString(href)) {\n\t\t\t\t\t\/\/ Try to guess the content type\n\t\t\t\t\tif (!type) {\n\t\t\t\t\t\tif (F.isImage(href)) {\n\t\t\t\t\t\t\ttype = 'image';\n\n\t\t\t\t\t\t} else if (F.isSWF(href)) {\n\t\t\t\t\t\t\ttype = 'swf';\n\n\t\t\t\t\t\t} else if (href.charAt(0) === '#') {\n\t\t\t\t\t\t\ttype = 'inline';\n\n\t\t\t\t\t\t} else if (isString(element)) {\n\t\t\t\t\t\t\ttype    = 'html';\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Split url into two pieces with source url and content selector, e.g,\n\t\t\t\t\t\/\/ \"\/mypage.html #my_id\" will load \"\/mypage.html\" and display element having id \"my_id\"\n\t\t\t\t\tif (type === 'ajax') {\n\t\t\t\t\t\threfParts = href.split(\/\\s+\/, 2);\n\t\t\t\t\t\thref      = hrefParts.shift();\n\t\t\t\t\t\tselector  = hrefParts.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!content) {\n\t\t\t\t\tif (type === 'inline') {\n\t\t\t\t\t\tif (href) {\n\t\t\t\t\t\t\tcontent = $( isString(href) ? href.replace(\/.*(?=#[^\\s]+$)\/, '') : href ); \/\/strip for ie7\n\n\t\t\t\t\t\t} else if (obj.isDom) {\n\t\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (type === 'html') {\n\t\t\t\t\t\tcontent = href;\n\n\t\t\t\t\t} else if (!type \u0026\u0026 !href \u0026\u0026 obj.isDom) {\n\t\t\t\t\t\ttype    = 'inline';\n\t\t\t\t\t\tcontent = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$.extend(obj, {\n\t\t\t\t\thref     : href,\n\t\t\t\t\ttype     : type,\n\t\t\t\t\tcontent  : content,\n\t\t\t\t\ttitle    : title,\n\t\t\t\t\tselector : selector\n\t\t\t\t});\n\n\t\t\t\tgroup[ i ] = obj;\n\t\t\t});\n\n\t\t\t\/\/ Extend the defaults\n\t\t\tF.opts = $.extend(true, {}, F.defaults, opts);\n\n\t\t\t\/\/ All options are merged recursive except keys\n\t\t\tif (opts.keys !== undefined) {\n\t\t\t\tF.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;\n\t\t\t}\n\n\t\t\tF.group = group;\n\n\t\t\treturn F._start(F.opts.index);\n\t\t},\n\n\t\t\/\/ Cancel image loading or abort ajax request\n\t\tcancel: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tif (!coming || false === F.trigger('onCancel')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (F.ajaxLoad) {\n\t\t\t\tF.ajaxLoad.abort();\n\t\t\t}\n\n\t\t\tF.ajaxLoad = null;\n\n\t\t\tif (F.imgPreload) {\n\t\t\t\tF.imgPreload.onload = F.imgPreload.onerror = null;\n\t\t\t}\n\n\t\t\tif (coming.wrap) {\n\t\t\t\tcoming.wrap.stop(true, true).trigger('onReset').remove();\n\t\t\t}\n\n\t\t\tF.coming = null;\n\n\t\t\t\/\/ If the first item has been canceled, then clear everything\n\t\t\tif (!F.current) {\n\t\t\t\tF._afterZoomOut( coming );\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Start closing animation if is open; remove immediately if opening\/closing\n\t\tclose: function (event) {\n\t\t\tF.cancel();\n\n\t\t\tif (false === F.trigger('beforeClose')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tif (!F.isActive) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || event === true) {\n\t\t\t\t$('.fancybox-wrap').stop(true).trigger('onReset').remove();\n\n\t\t\t\tF._afterZoomOut();\n\n\t\t\t} else {\n\t\t\t\tF.isOpen = F.isOpened = false;\n\t\t\t\tF.isClosing = true;\n\n\t\t\t\t$('.fancybox-item, .fancybox-nav').remove();\n\n\t\t\t\tF.wrap.stop(true, true).removeClass('fancybox-opened');\n\n\t\t\t\tF.transitions[ F.current.closeMethod ]();\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Manage slideshow:\n\t\t\/\/   $.fancybox.play(); - toggle slideshow\n\t\t\/\/   $.fancybox.play( true ); - start\n\t\t\/\/   $.fancybox.play( false ); - stop\n\t\tplay: function ( action ) {\n\t\t\tvar clear = function () {\n\t\t\t\t\tclearTimeout(F.player.timer);\n\t\t\t\t},\n\t\t\t\tset = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tif (F.current \u0026\u0026 F.player.isActive) {\n\t\t\t\t\t\tF.player.timer = setTimeout(F.next, F.current.playSpeed);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstop = function () {\n\t\t\t\t\tclear();\n\n\t\t\t\t\tD.unbind('.player');\n\n\t\t\t\t\tF.player.isActive = false;\n\n\t\t\t\t\tF.trigger('onPlayEnd');\n\t\t\t\t},\n\t\t\t\tstart = function () {\n\t\t\t\t\tif (F.current \u0026\u0026 (F.current.loop || F.current.index \u003c F.group.length - 1)) {\n\t\t\t\t\t\tF.player.isActive = true;\n\n\t\t\t\t\t\tD.bind({\n\t\t\t\t\t\t\t'onCancel.player beforeClose.player' : stop,\n\t\t\t\t\t\t\t'onUpdate.player'   : set,\n\t\t\t\t\t\t\t'beforeLoad.player' : clear\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tset();\n\n\t\t\t\t\t\tF.trigger('onPlayStart');\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tif (action === true || (!F.player.isActive \u0026\u0026 action !== false)) {\n\t\t\t\tstart();\n\t\t\t} else {\n\t\t\t\tstop();\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Navigate to next gallery item\n\t\tnext: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.next;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index + 1, direction, 'next');\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Navigate to previous gallery item\n\t\tprev: function ( direction ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (current) {\n\t\t\t\tif (!isString(direction)) {\n\t\t\t\t\tdirection = current.direction.prev;\n\t\t\t\t}\n\n\t\t\t\tF.jumpto(current.index - 1, direction, 'prev');\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Navigate to gallery item by index\n\t\tjumpto: function ( index, direction, router ) {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tindex = getScalar(index);\n\n\t\t\tF.direction = direction || current.direction[ (index \u003e= current.index ? 'next' : 'prev') ];\n\t\t\tF.router    = router || 'jumpto';\n\n\t\t\tif (current.loop) {\n\t\t\t\tif (index \u003c 0) {\n\t\t\t\t\tindex = current.group.length + (index % current.group.length);\n\t\t\t\t}\n\n\t\t\t\tindex = index % current.group.length;\n\t\t\t}\n\n\t\t\tif (current.group[ index ] !== undefined) {\n\t\t\t\tF.cancel();\n\n\t\t\t\tF._start(index);\n\t\t\t}\n\t\t},\n\n\t\t\/\/ Center inside viewport and toggle position type to fixed or absolute if needed\n\t\treposition: function (e, onlyAbsolute) {\n\t\t\tvar current = F.current,\n\t\t\t\twrap    = current ? current.wrap : null,\n\t\t\t\tpos;\n\n\t\t\tif (wrap) {\n\t\t\t\tpos = F._getPosition(onlyAbsolute);\n\n\t\t\t\tif (e \u0026\u0026 e.type === 'scroll') {\n\t\t\t\t\tdelete pos.position;\n\n\t\t\t\t\twrap.stop(true, true).animate(pos, 200);\n\n\t\t\t\t} else {\n\t\t\t\t\twrap.css(pos);\n\n\t\t\t\t\tcurrent.pos = $.extend({}, current.dim, pos);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdate: function (e) {\n\t\t\tvar type = (e \u0026\u0026 e.type),\n\t\t\t\tanyway = !type || type === 'orientationchange';\n\n\t\t\tif (anyway) {\n\t\t\t\tclearTimeout(didUpdate);\n\n\t\t\t\tdidUpdate = null;\n\t\t\t}\n\n\t\t\tif (!F.isOpen || didUpdate) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdidUpdate = setTimeout(function() {\n\t\t\t\tvar current = F.current;\n\n\t\t\t\tif (!current || F.isClosing) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tF.wrap.removeClass('fancybox-tmp');\n\n\t\t\t\tif (anyway || type === 'load' || (type === 'resize' \u0026\u0026 current.autoResize)) {\n\t\t\t\t\tF._setDimension();\n\t\t\t\t}\n\n\t\t\t\tif (!(type === 'scroll' \u0026\u0026 current.canShrink)) {\n\t\t\t\t\tF.reposition(e);\n\t\t\t\t}\n\n\t\t\t\tF.trigger('onUpdate');\n\n\t\t\t\tdidUpdate = null;\n\n\t\t\t}, (anyway \u0026\u0026 !isTouch ? 0 : 300));\n\t\t},\n\n\t\t\/\/ Shrink content to fit inside viewport or restore if resized\n\t\ttoggle: function ( action ) {\n\t\t\tif (F.isOpen) {\n\t\t\t\tF.current.fitToView = $.type(action) === \"boolean\" ? action : !F.current.fitToView;\n\n\t\t\t\t\/\/ Help browser to restore document dimensions\n\t\t\t\tif (isTouch) {\n\t\t\t\t\tF.wrap.removeAttr('style').addClass('fancybox-tmp');\n\n\t\t\t\t\tF.trigger('onUpdate');\n\t\t\t\t}\n\n\t\t\t\tF.update();\n\t\t\t}\n\t\t},\n\n\t\thideLoading: function () {\n\t\t\tD.unbind('.loading');\n\n\t\t\t$('#fancybox-loading').remove();\n\t\t},\n\n\t\tshowLoading: function () {\n\t\t\tvar el, viewport;\n\n\t\t\tF.hideLoading();\n\n\t\t\tel = $('\u003cdiv id=\"fancybox-loading\"\u003e\u003cdiv\u003e\u003c\/div\u003e\u003c\/div\u003e').click(F.cancel).appendTo('body');\n\n\t\t\t\/\/ If user will press the escape-button, the request will be canceled\n\t\t\tD.bind('keydown.loading', function(e) {\n\t\t\t\tif ((e.which || e.keyCode) === 27) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.cancel();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!F.defaults.fixed) {\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\t\tel.css({\n\t\t\t\t\tposition : 'absolute',\n\t\t\t\t\ttop  : (viewport.h * 0.5) + viewport.y,\n\t\t\t\t\tleft : (viewport.w * 0.5) + viewport.x\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tgetViewport: function () {\n\t\t\tvar locked = (F.current \u0026\u0026 F.current.locked) || false,\n\t\t\t\trez    = {\n\t\t\t\t\tx: W.scrollLeft(),\n\t\t\t\t\ty: W.scrollTop()\n\t\t\t\t};\n\n\t\t\tif (locked) {\n\t\t\t\trez.w = locked[0].clientWidth;\n\t\t\t\trez.h = locked[0].clientHeight;\n\n\t\t\t} else {\n\t\t\t\t\/\/ See http:\/\/bugs.jquery.com\/ticket\/6724\n\t\t\t\trez.w = isTouch \u0026\u0026 window.innerWidth  ? window.innerWidth  : W.width();\n\t\t\t\trez.h = isTouch \u0026\u0026 window.innerHeight ? window.innerHeight : W.height();\n\t\t\t}\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t\/\/ Unbind the keyboard \/ clicking actions\n\t\tunbindEvents: function () {\n\t\t\tif (F.wrap \u0026\u0026 isQuery(F.wrap)) {\n\t\t\t\tF.wrap.unbind('.fb');\n\t\t\t}\n\n\t\t\tD.unbind('.fb');\n\t\t\tW.unbind('.fb');\n\t\t},\n\n\t\tbindEvents: function () {\n\t\t\tvar current = F.current,\n\t\t\t\tkeys;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t\/\/ Changing document height on iOS devices triggers a 'resize' event,\n\t\t\t\/\/ that can change document height... repeating infinitely\n\t\t\tW.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter \u0026\u0026 !current.locked ? ' scroll.fb' : ''), F.update);\n\n\t\t\tkeys = current.keys;\n\n\t\t\tif (keys) {\n\t\t\t\tD.bind('keydown.fb', function (e) {\n\t\t\t\t\tvar code   = e.which || e.keyCode,\n\t\t\t\t\t\ttarget = e.target || e.srcElement;\n\n\t\t\t\t\t\/\/ Skip esc key if loading, because showLoading will cancel preloading\n\t\t\t\t\tif (code === 27 \u0026\u0026 F.coming) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Ignore key combinations and key events within form elements\n\t\t\t\t\tif (!e.ctrlKey \u0026\u0026 !e.altKey \u0026\u0026 !e.shiftKey \u0026\u0026 !e.metaKey \u0026\u0026 !(target \u0026\u0026 (target.type || $(target).is('[contenteditable]')))) {\n\t\t\t\t\t\t$.each(keys, function(i, val) {\n\t\t\t\t\t\t\tif (current.group.length \u003e 1 \u0026\u0026 val[ code ] !== undefined) {\n\t\t\t\t\t\t\t\tF[ i ]( val[ code ] );\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ($.inArray(code, val) \u003e -1) {\n\t\t\t\t\t\t\t\tF[ i ] ();\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ($.fn.mousewheel \u0026\u0026 current.mouseWheel) {\n\t\t\t\tF.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {\n\t\t\t\t\tvar target = e.target || null,\n\t\t\t\t\t\tparent = $(target),\n\t\t\t\t\t\tcanScroll = false;\n\n\t\t\t\t\twhile (parent.length) {\n\t\t\t\t\t\tif (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcanScroll = isScrollable( parent[0] );\n\t\t\t\t\t\tparent    = $(parent).parent();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (delta !== 0 \u0026\u0026 !canScroll) {\n\t\t\t\t\t\tif (F.group.length \u003e 1 \u0026\u0026 !current.canShrink) {\n\t\t\t\t\t\t\tif (deltaY \u003e 0 || deltaX \u003e 0) {\n\t\t\t\t\t\t\t\tF.prev( deltaY \u003e 0 ? 'down' : 'left' );\n\n\t\t\t\t\t\t\t} else if (deltaY \u003c 0 || deltaX \u003c 0) {\n\t\t\t\t\t\t\t\tF.next( deltaY \u003c 0 ? 'up' : 'right' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\ttrigger: function (event, o) {\n\t\t\tvar ret, obj = o || F.coming || F.current;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ($.isFunction( obj[event] )) {\n\t\t\t\tret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));\n\t\t\t}\n\n\t\t\tif (ret === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (obj.helpers) {\n\t\t\t\t$.each(obj.helpers, function (helper, opts) {\n\t\t\t\t\tif (opts \u0026\u0026 F.helpers[helper] \u0026\u0026 $.isFunction(F.helpers[helper][event])) {\n\t\t\t\t\t\tF.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tD.trigger(event);\n\t\t},\n\n\t\tisImage: function (str) {\n\t\t\treturn isString(str) \u0026\u0026 str.match(\/(^data:image\\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)\/i);\n\t\t},\n\n\t\tisSWF: function (str) {\n\t\t\treturn isString(str) \u0026\u0026 str.match(\/\\.(swf)((\\?|#).*)?$\/i);\n\t\t},\n\n\t\t_start: function (index) {\n\t\t\tvar coming = {},\n\t\t\t\tobj,\n\t\t\t\thref,\n\t\t\t\ttype,\n\t\t\t\tmargin,\n\t\t\t\tpadding;\n\n\t\t\tindex = getScalar( index );\n\t\t\tobj   = F.group[ index ] || null;\n\n\t\t\tif (!obj) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tcoming = $.extend(true, {}, F.opts, obj);\n\n\t\t\t\/\/ Convert margin and padding properties to array - top, right, bottom, left\n\t\t\tmargin  = coming.margin;\n\t\t\tpadding = coming.padding;\n\n\t\t\tif ($.type(margin) === 'number') {\n\t\t\t\tcoming.margin = [margin, margin, margin, margin];\n\t\t\t}\n\n\t\t\tif ($.type(padding) === 'number') {\n\t\t\t\tcoming.padding = [padding, padding, padding, padding];\n\t\t\t}\n\n\t\t\t\/\/ 'modal' propery is just a shortcut\n\t\t\tif (coming.modal) {\n\t\t\t\t$.extend(true, coming, {\n\t\t\t\t\tcloseBtn   : false,\n\t\t\t\t\tcloseClick : false,\n\t\t\t\t\tnextClick  : false,\n\t\t\t\t\tarrows     : false,\n\t\t\t\t\tmouseWheel : false,\n\t\t\t\t\tkeys       : null,\n\t\t\t\t\thelpers: {\n\t\t\t\t\t\toverlay : {\n\t\t\t\t\t\t\tcloseClick : false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/\/ 'autoSize' property is a shortcut, too\n\t\t\tif (coming.autoSize) {\n\t\t\t\tcoming.autoWidth = coming.autoHeight = true;\n\t\t\t}\n\n\t\t\tif (coming.width === 'auto') {\n\t\t\t\tcoming.autoWidth = true;\n\t\t\t}\n\n\t\t\tif (coming.height === 'auto') {\n\t\t\t\tcoming.autoHeight = true;\n\t\t\t}\n\n\t\t\t\/*\n\t\t\t * Add reference to the group, so it`s possible to access from callbacks, example:\n\t\t\t * afterLoad : function() {\n\t\t\t *     this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');\n\t\t\t * }\n\t\t\t *\/\n\n\t\t\tcoming.group  = F.group;\n\t\t\tcoming.index  = index;\n\n\t\t\t\/\/ Give a chance for callback or helpers to update coming item (type, title, etc)\n\t\t\tF.coming = coming;\n\n\t\t\tif (false === F.trigger('beforeLoad')) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttype = coming.type;\n\t\t\thref = coming.href;\n\n\t\t\tif (!type) {\n\t\t\t\tF.coming = null;\n\n\t\t\t\t\/\/If we can not determine content type then drop silently or display next\/prev item if looping through gallery\n\t\t\t\tif (F.current \u0026\u0026 F.router \u0026\u0026 F.router !== 'jumpto') {\n\t\t\t\t\tF.current.index = index;\n\n\t\t\t\t\treturn F[ F.router ]( F.direction );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tF.isActive = true;\n\n\t\t\tif (type === 'image' || type === 'swf') {\n\t\t\t\tcoming.autoHeight = coming.autoWidth = false;\n\t\t\t\tcoming.scrolling  = 'visible';\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tcoming.aspectRatio = true;\n\t\t\t}\n\n\t\t\tif (type === 'iframe' \u0026\u0026 isTouch) {\n\t\t\t\tcoming.scrolling = 'scroll';\n\t\t\t}\n\n\t\t\t\/\/ Build the neccessary markup\n\t\t\tcoming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );\n\n\t\t\t$.extend(coming, {\n\t\t\t\tskin  : $('.fancybox-skin',  coming.wrap),\n\t\t\t\touter : $('.fancybox-outer', coming.wrap),\n\t\t\t\tinner : $('.fancybox-inner', coming.wrap)\n\t\t\t});\n\n\t\t\t$.each([\"Top\", \"Right\", \"Bottom\", \"Left\"], function(i, v) {\n\t\t\t\tcoming.skin.css('padding' + v, getValue(coming.padding[ i ]));\n\t\t\t});\n\n\t\t\tF.trigger('onReady');\n\n\t\t\t\/\/ Check before try to load; 'inline' and 'html' types need content, others - href\n\t\t\tif (type === 'inline' || type === 'html') {\n\t\t\t\tif (!coming.content || !coming.content.length) {\n\t\t\t\t\treturn F._error( 'content' );\n\t\t\t\t}\n\n\t\t\t} else if (!href) {\n\t\t\t\treturn F._error( 'href' );\n\t\t\t}\n\n\t\t\tif (type === 'image') {\n\t\t\t\tF._loadImage();\n\n\t\t\t} else if (type === 'ajax') {\n\t\t\t\tF._loadAjax();\n\n\t\t\t} else if (type === 'iframe') {\n\t\t\t\tF._loadIframe();\n\n\t\t\t} else {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_error: function ( type ) {\n\t\t\t$.extend(F.coming, {\n\t\t\t\ttype       : 'html',\n\t\t\t\tautoWidth  : true,\n\t\t\t\tautoHeight : true,\n\t\t\t\tminWidth   : 0,\n\t\t\t\tminHeight  : 0,\n\t\t\t\tscrolling  : 'no',\n\t\t\t\thasError   : type,\n\t\t\t\tcontent    : F.coming.tpl.error\n\t\t\t});\n\n\t\t\tF._afterLoad();\n\t\t},\n\n\t\t_loadImage: function () {\n\t\t\t\/\/ Reset preload image so it is later possible to check \"complete\" property\n\t\t\tvar img = F.imgPreload = new Image();\n\n\t\t\timg.onload = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF.coming.width  = this.width \/ F.opts.pixelRatio;\n\t\t\t\tF.coming.height = this.height \/ F.opts.pixelRatio;\n\n\t\t\t\tF._afterLoad();\n\t\t\t};\n\n\t\t\timg.onerror = function () {\n\t\t\t\tthis.onload = this.onerror = null;\n\n\t\t\t\tF._error( 'image' );\n\t\t\t};\n\n\t\t\timg.src = F.coming.href;\n\n\t\t\tif (img.complete !== true) {\n\t\t\t\tF.showLoading();\n\t\t\t}\n\t\t},\n\n\t\t_loadAjax: function () {\n\t\t\tvar coming = F.coming;\n\n\t\t\tF.showLoading();\n\n\t\t\tF.ajaxLoad = $.ajax($.extend({}, coming.ajax, {\n\t\t\t\turl: coming.href,\n\t\t\t\terror: function (jqXHR, textStatus) {\n\t\t\t\t\tif (F.coming \u0026\u0026 textStatus !== 'abort') {\n\t\t\t\t\t\tF._error( 'ajax', jqXHR );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tF.hideLoading();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsuccess: function (data, textStatus) {\n\t\t\t\t\tif (textStatus === 'success') {\n\t\t\t\t\t\tcoming.content = data;\n\n\t\t\t\t\t\tF._afterLoad();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}));\n\t\t},\n\n\t\t_loadIframe: function() {\n\t\t\tvar coming = F.coming,\n\t\t\t\tiframe = $(coming.tpl.iframe.replace(\/\\{rnd\\}\/g, new Date().getTime()))\n\t\t\t\t\t.attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)\n\t\t\t\t\t.attr('src', coming.href);\n\n\t\t\t\/\/ This helps IE\n\t\t\t$(coming.wrap).bind('onReset', function () {\n\t\t\t\ttry {\n\t\t\t\t\t$(this).find('iframe').hide().attr('src', '\/\/about:blank').end().empty();\n\t\t\t\t} catch (e) {}\n\t\t\t});\n\n\t\t\tif (coming.iframe.preload) {\n\t\t\t\tF.showLoading();\n\n\t\t\t\tiframe.one('load', function() {\n\t\t\t\t\t$(this).data('ready', 1);\n\n\t\t\t\t\t\/\/ iOS will lose scrolling if we resize\n\t\t\t\t\tif (!isTouch) {\n\t\t\t\t\t\t$(this).bind('load.fb', F.update);\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Without this trick:\n\t\t\t\t\t\/\/   - iframe won't scroll on iOS devices\n\t\t\t\t\t\/\/   - IE7 sometimes displays empty iframe\n\t\t\t\t\t$(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();\n\n\t\t\t\t\tF._afterLoad();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcoming.content = iframe.appendTo( coming.inner );\n\n\t\t\tif (!coming.iframe.preload) {\n\t\t\t\tF._afterLoad();\n\t\t\t}\n\t\t},\n\n\t\t_preloadImages: function() {\n\t\t\tvar group   = F.group,\n\t\t\t\tcurrent = F.current,\n\t\t\t\tlen     = group.length,\n\t\t\t\tcnt     = current.preload ? Math.min(current.preload, len - 1) : 0,\n\t\t\t\titem,\n\t\t\t\ti;\n\n\t\t\tfor (i = 1; i \u003c= cnt; i += 1) {\n\t\t\t\titem = group[ (current.index + i ) % len ];\n\n\t\t\t\tif (item.type === 'image' \u0026\u0026 item.href) {\n\t\t\t\t\tnew Image().src = item.href;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_afterLoad: function () {\n\t\t\tvar coming   = F.coming,\n\t\t\t\tprevious = F.current,\n\t\t\t\tplaceholder = 'fancybox-placeholder',\n\t\t\t\tcurrent,\n\t\t\t\tcontent,\n\t\t\t\ttype,\n\t\t\t\tscrolling,\n\t\t\t\thref,\n\t\t\t\tembed;\n\n\t\t\tF.hideLoading();\n\n\t\t\tif (!coming || F.isActive === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (false === F.trigger('afterLoad', coming, previous)) {\n\t\t\t\tcoming.wrap.stop(true).trigger('onReset').remove();\n\n\t\t\t\tF.coming = null;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (previous) {\n\t\t\t\tF.trigger('beforeChange', previous);\n\n\t\t\t\tprevious.wrap.stop(true).removeClass('fancybox-opened')\n\t\t\t\t\t.find('.fancybox-item, .fancybox-nav')\n\t\t\t\t\t.remove();\n\t\t\t}\n\n\t\t\tF.unbindEvents();\n\n\t\t\tcurrent   = coming;\n\t\t\tcontent   = coming.content;\n\t\t\ttype      = coming.type;\n\t\t\tscrolling = coming.scrolling;\n\n\t\t\t$.extend(F, {\n\t\t\t\twrap  : current.wrap,\n\t\t\t\tskin  : current.skin,\n\t\t\t\touter : current.outer,\n\t\t\t\tinner : current.inner,\n\t\t\t\tcurrent  : current,\n\t\t\t\tprevious : previous\n\t\t\t});\n\n\t\t\thref = current.href;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inline':\n\t\t\t\tcase 'ajax':\n\t\t\t\tcase 'html':\n\t\t\t\t\tif (current.selector) {\n\t\t\t\t\t\tcontent = $('\u003cdiv\u003e').html(content).find(current.selector);\n\n\t\t\t\t\t} else if (isQuery(content)) {\n\t\t\t\t\t\tif (!content.data(placeholder)) {\n\t\t\t\t\t\t\tcontent.data(placeholder, $('\u003cdiv class=\"' + placeholder + '\"\u003e\u003c\/div\u003e').insertAfter( content ).hide() );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontent = content.show().detach();\n\n\t\t\t\t\t\tcurrent.wrap.bind('onReset', function () {\n\t\t\t\t\t\t\tif ($(this).find(content).length) {\n\t\t\t\t\t\t\t\tcontent.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'image':\n\t\t\t\t\tcontent = current.tpl.image.replace('{href}', href);\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'swf':\n\t\t\t\t\tcontent = '\u003cobject id=\"fancybox-swf\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"100%\" height=\"100%\"\u003e\u003cparam name=\"movie\" value=\"' + href + '\"\u003e';\n\t\t\t\t\tembed   = '';\n\n\t\t\t\t\t$.each(current.swf, function(name, val) {\n\t\t\t\t\t\tcontent += '\u003cparam name=\"' + name + '\" value=\"' + val + '\"\u003e';\n\t\t\t\t\t\tembed   += ' ' + name + '=\"' + val + '\"';\n\t\t\t\t\t});\n\n\t\t\t\t\tcontent += '\u003cembed src=\"' + href + '\" type=\"application\/x-shockwave-flash\" width=\"100%\" height=\"100%\"' + embed + '\u003e\u003c\/object\u003e';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!(isQuery(content) \u0026\u0026 content.parent().is(current.inner))) {\n\t\t\t\tcurrent.inner.append( content );\n\t\t\t}\n\n\t\t\t\/\/ Give a chance for helpers or callbacks to update elements\n\t\t\tF.trigger('beforeShow');\n\n\t\t\t\/\/ Set scrolling before calculating dimensions\n\t\t\tcurrent.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));\n\n\t\t\t\/\/ Set initial dimensions and start position\n\t\t\tF._setDimension();\n\n\t\t\tF.reposition();\n\n\t\t\tF.isOpen = false;\n\t\t\tF.coming = null;\n\n\t\t\tF.bindEvents();\n\n\t\t\tif (!F.isOpened) {\n\t\t\t\t$('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();\n\n\t\t\t} else if (previous.prevMethod) {\n\t\t\t\tF.transitions[ previous.prevMethod ]();\n\t\t\t}\n\n\t\t\tF.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();\n\n\t\t\tF._preloadImages();\n\t\t},\n\n\t\t_setDimension: function () {\n\t\t\tvar viewport   = F.getViewport(),\n\t\t\t\tsteps      = 0,\n\t\t\t\tcanShrink  = false,\n\t\t\t\tcanExpand  = false,\n\t\t\t\twrap       = F.wrap,\n\t\t\t\tskin       = F.skin,\n\t\t\t\tinner      = F.inner,\n\t\t\t\tcurrent    = F.current,\n\t\t\t\twidth      = current.width,\n\t\t\t\theight     = current.height,\n\t\t\t\tminWidth   = current.minWidth,\n\t\t\t\tminHeight  = current.minHeight,\n\t\t\t\tmaxWidth   = current.maxWidth,\n\t\t\t\tmaxHeight  = current.maxHeight,\n\t\t\t\tscrolling  = current.scrolling,\n\t\t\t\tscrollOut  = current.scrollOutside ? current.scrollbarWidth : 0,\n\t\t\t\tmargin     = current.margin,\n\t\t\t\twMargin    = getScalar(margin[1] + margin[3]),\n\t\t\t\thMargin    = getScalar(margin[0] + margin[2]),\n\t\t\t\twPadding,\n\t\t\t\thPadding,\n\t\t\t\twSpace,\n\t\t\t\thSpace,\n\t\t\t\torigWidth,\n\t\t\t\torigHeight,\n\t\t\t\torigMaxWidth,\n\t\t\t\torigMaxHeight,\n\t\t\t\tratio,\n\t\t\t\twidth_,\n\t\t\t\theight_,\n\t\t\t\tmaxWidth_,\n\t\t\t\tmaxHeight_,\n\t\t\t\tiframe,\n\t\t\t\tbody;\n\n\t\t\t\/\/ Reset dimensions so we could re-check actual size\n\t\t\twrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');\n\n\t\t\twPadding = getScalar(skin.outerWidth(true)  - skin.width());\n\t\t\thPadding = getScalar(skin.outerHeight(true) - skin.height());\n\n\t\t\t\/\/ Any space between content and viewport (margin, padding, border, title)\n\t\t\twSpace = wMargin + wPadding;\n\t\t\thSpace = hMargin + hPadding;\n\n\t\t\torigWidth  = isPercentage(width)  ? (viewport.w - wSpace) * getScalar(width)  \/ 100 : width;\n\t\t\torigHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) \/ 100 : height;\n\n\t\t\tif (current.type === 'iframe') {\n\t\t\t\tiframe = current.content;\n\n\t\t\t\tif (current.autoHeight \u0026\u0026 iframe.data('ready') === 1) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (iframe[0].contentWindow.document.location) {\n\t\t\t\t\t\t\tinner.width( origWidth ).height(9999);\n\n\t\t\t\t\t\t\tbody = iframe.contents().find('body');\n\n\t\t\t\t\t\t\tif (scrollOut) {\n\t\t\t\t\t\t\t\tbody.css('overflow-x', 'hidden');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\torigHeight = body.outerHeight(true);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t}\n\n\t\t\t} else if (current.autoWidth || current.autoHeight) {\n\t\t\t\tinner.addClass( 'fancybox-tmp' );\n\n\t\t\t\t\/\/ Set width or height in case we need to calculate only one dimension\n\t\t\t\tif (!current.autoWidth) {\n\t\t\t\t\tinner.width( origWidth );\n\t\t\t\t}\n\n\t\t\t\tif (!current.autoHeight) {\n\t\t\t\t\tinner.height( origHeight );\n\t\t\t\t}\n\n\t\t\t\tif (current.autoWidth) {\n\t\t\t\t\torigWidth = inner.width();\n\t\t\t\t}\n\n\t\t\t\tif (current.autoHeight) {\n\t\t\t\t\torigHeight = inner.height();\n\t\t\t\t}\n\n\t\t\t\tinner.removeClass( 'fancybox-tmp' );\n\t\t\t}\n\n\t\t\twidth  = getScalar( origWidth );\n\t\t\theight = getScalar( origHeight );\n\n\t\t\tratio  = origWidth \/ origHeight;\n\n\t\t\t\/\/ Calculations for the content\n\t\t\tminWidth  = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);\n\t\t\tmaxWidth  = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);\n\n\t\t\tminHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);\n\t\t\tmaxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);\n\n\t\t\t\/\/ These will be used to determine if wrap can fit in the viewport\n\t\t\torigMaxWidth  = maxWidth;\n\t\t\torigMaxHeight = maxHeight;\n\n\t\t\tif (current.fitToView) {\n\t\t\t\tmaxWidth  = Math.min(viewport.w - wSpace, maxWidth);\n\t\t\t\tmaxHeight = Math.min(viewport.h - hSpace, maxHeight);\n\t\t\t}\n\n\t\t\tmaxWidth_  = viewport.w - wMargin;\n\t\t\tmaxHeight_ = viewport.h - hMargin;\n\n\t\t\tif (current.aspectRatio) {\n\t\t\t\tif (width \u003e maxWidth) {\n\t\t\t\t\twidth  = maxWidth;\n\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height \u003e maxHeight) {\n\t\t\t\t\theight = maxHeight;\n\t\t\t\t\twidth  = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t\tif (width \u003c minWidth) {\n\t\t\t\t\twidth  = minWidth;\n\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t}\n\n\t\t\t\tif (height \u003c minHeight) {\n\t\t\t\t\theight = minHeight;\n\t\t\t\t\twidth  = getScalar(height * ratio);\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\twidth = Math.max(minWidth, Math.min(width, maxWidth));\n\n\t\t\t\tif (current.autoHeight \u0026\u0026 current.type !== 'iframe') {\n\t\t\t\t\tinner.width( width );\n\n\t\t\t\t\theight = inner.height();\n\t\t\t\t}\n\n\t\t\t\theight = Math.max(minHeight, Math.min(height, maxHeight));\n\t\t\t}\n\n\t\t\t\/\/ Try to fit inside viewport (including the title)\n\t\t\tif (current.fitToView) {\n\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t\/\/ Real wrap dimensions\n\t\t\t\twidth_  = wrap.width();\n\t\t\t\theight_ = wrap.height();\n\n\t\t\t\tif (current.aspectRatio) {\n\t\t\t\t\twhile ((width_ \u003e maxWidth_ || height_ \u003e maxHeight_) \u0026\u0026 width \u003e minWidth \u0026\u0026 height \u003e minHeight) {\n\t\t\t\t\t\tif (steps++ \u003e 19) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\theight = Math.max(minHeight, Math.min(maxHeight, height - 10));\n\t\t\t\t\t\twidth  = getScalar(height * ratio);\n\n\t\t\t\t\t\tif (width \u003c minWidth) {\n\t\t\t\t\t\t\twidth  = minWidth;\n\t\t\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (width \u003e maxWidth) {\n\t\t\t\t\t\t\twidth  = maxWidth;\n\t\t\t\t\t\t\theight = getScalar(width \/ ratio);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinner.width( width ).height( height );\n\n\t\t\t\t\t\twrap.width( width + wPadding );\n\n\t\t\t\t\t\twidth_  = wrap.width();\n\t\t\t\t\t\theight_ = wrap.height();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\twidth  = Math.max(minWidth,  Math.min(width,  width  - (width_  - maxWidth_)));\n\t\t\t\t\theight = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (scrollOut \u0026\u0026 scrolling === 'auto' \u0026\u0026 height \u003c origHeight \u0026\u0026 (width + wPadding + scrollOut) \u003c maxWidth_) {\n\t\t\t\twidth += scrollOut;\n\t\t\t}\n\n\t\t\tinner.width( width ).height( height );\n\n\t\t\twrap.width( width + wPadding );\n\n\t\t\twidth_  = wrap.width();\n\t\t\theight_ = wrap.height();\n\n\t\t\tcanShrink = (width_ \u003e maxWidth_ || height_ \u003e maxHeight_) \u0026\u0026 width \u003e minWidth \u0026\u0026 height \u003e minHeight;\n\t\t\tcanExpand = current.aspectRatio ? (width \u003c origMaxWidth \u0026\u0026 height \u003c origMaxHeight \u0026\u0026 width \u003c origWidth \u0026\u0026 height \u003c origHeight) : ((width \u003c origMaxWidth || height \u003c origMaxHeight) \u0026\u0026 (width \u003c origWidth || height \u003c origHeight));\n\n\t\t\t$.extend(current, {\n\t\t\t\tdim : {\n\t\t\t\t\twidth\t: getValue( width_ ),\n\t\t\t\t\theight\t: getValue( height_ )\n\t\t\t\t},\n\t\t\t\torigWidth  : origWidth,\n\t\t\t\torigHeight : origHeight,\n\t\t\t\tcanShrink  : canShrink,\n\t\t\t\tcanExpand  : canExpand,\n\t\t\t\twPadding   : wPadding,\n\t\t\t\thPadding   : hPadding,\n\t\t\t\twrapSpace  : height_ - skin.outerHeight(true),\n\t\t\t\tskinSpace  : skin.height() - height\n\t\t\t});\n\n\t\t\tif (!iframe \u0026\u0026 current.autoHeight \u0026\u0026 height \u003e minHeight \u0026\u0026 height \u003c maxHeight \u0026\u0026 !canExpand) {\n\t\t\t\tinner.height('auto');\n\t\t\t}\n\t\t},\n\n\t\t_getPosition: function (onlyAbsolute) {\n\t\t\tvar current  = F.current,\n\t\t\t\tviewport = F.getViewport(),\n\t\t\t\tmargin   = current.margin,\n\t\t\t\twidth    = F.wrap.width()  + margin[1] + margin[3],\n\t\t\t\theight   = F.wrap.height() + margin[0] + margin[2],\n\t\t\t\trez      = {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop  : margin[0],\n\t\t\t\t\tleft : margin[3]\n\t\t\t\t};\n\n\t\t\tif (current.autoCenter \u0026\u0026 current.fixed \u0026\u0026 !onlyAbsolute \u0026\u0026 height \u003c= viewport.h \u0026\u0026 width \u003c= viewport.w) {\n\t\t\t\trez.position = 'fixed';\n\n\t\t\t} else if (!current.locked) {\n\t\t\t\trez.top  += viewport.y;\n\t\t\t\trez.left += viewport.x;\n\t\t\t}\n\n\t\t\trez.top  = getValue(Math.max(rez.top,  rez.top  + ((viewport.h - height) * current.topRatio)));\n\t\t\trez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width)  * current.leftRatio)));\n\n\t\t\treturn rez;\n\t\t},\n\n\t\t_afterZoomIn: function () {\n\t\t\tvar current = F.current;\n\n\t\t\tif (!current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tF.isOpen = F.isOpened = true;\n\n\t\t\tF.wrap.css('overflow', 'visible').addClass('fancybox-opened');\n\n\t\t\tF.update();\n\n\t\t\t\/\/ Assign a click event\n\t\t\tif ( current.closeClick || (current.nextClick \u0026\u0026 F.group.length \u003e 1) ) {\n\t\t\t\tF.inner.css('cursor', 'pointer').bind('click.fb', function(e) {\n\t\t\t\t\tif (!$(e.target).is('a') \u0026\u0026 !$(e.target).parent().is('a')) {\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tF[ current.closeClick ? 'close' : 'next' ]();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/\/ Create a close button\n\t\t\tif (current.closeBtn) {\n\t\t\t\t$(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tF.close();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t\/\/ Create navigation arrows\n\t\t\tif (current.arrows \u0026\u0026 F.group.length \u003e 1) {\n\t\t\t\tif (current.loop || current.index \u003e 0) {\n\t\t\t\t\t$(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);\n\t\t\t\t}\n\n\t\t\t\tif (current.loop || current.index \u003c F.group.length - 1) {\n\t\t\t\t\t$(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.trigger('afterShow');\n\n\t\t\t\/\/ Stop the slideshow if this is the last item\n\t\t\tif (!current.loop \u0026\u0026 current.index === current.group.length - 1) {\n\t\t\t\tF.play( false );\n\n\t\t\t} else if (F.opts.autoPlay \u0026\u0026 !F.player.isActive) {\n\t\t\t\tF.opts.autoPlay = false;\n\n\t\t\t\tF.play();\n\t\t\t}\n\t\t},\n\n\t\t_afterZoomOut: function ( obj ) {\n\t\t\tobj = obj || F.current;\n\n\t\t\t$('.fancybox-wrap').trigger('onReset').remove();\n\n\t\t\t$.extend(F, {\n\t\t\t\tgroup  : {},\n\t\t\t\topts   : {},\n\t\t\t\trouter : false,\n\t\t\t\tcurrent   : null,\n\t\t\t\tisActive  : false,\n\t\t\t\tisOpened  : false,\n\t\t\t\tisOpen    : false,\n\t\t\t\tisClosing : false,\n\t\t\t\twrap   : null,\n\t\t\t\tskin   : null,\n\t\t\t\touter  : null,\n\t\t\t\tinner  : null\n\t\t\t});\n\n\t\t\tF.trigger('afterClose', obj);\n\t\t}\n\t});\n\n\t\/*\n\t *\tDefault transitions\n\t *\/\n\n\tF.transitions = {\n\t\tgetOrigPosition: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\telement  = current.element,\n\t\t\t\torig     = current.orig,\n\t\t\t\tpos      = {},\n\t\t\t\twidth    = 50,\n\t\t\t\theight   = 50,\n\t\t\t\thPadding = current.hPadding,\n\t\t\t\twPadding = current.wPadding,\n\t\t\t\tviewport = F.getViewport();\n\n\t\t\tif (!orig \u0026\u0026 current.isDom \u0026\u0026 element.is(':visible')) {\n\t\t\t\torig = element.find('img:first');\n\n\t\t\t\tif (!orig.length) {\n\t\t\t\t\torig = element;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isQuery(orig)) {\n\t\t\t\tpos = orig.offset();\n\n\t\t\t\tif (orig.is('img')) {\n\t\t\t\t\twidth  = orig.outerWidth();\n\t\t\t\t\theight = orig.outerHeight();\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tpos.top  = viewport.y + (viewport.h - height) * current.topRatio;\n\t\t\t\tpos.left = viewport.x + (viewport.w - width)  * current.leftRatio;\n\t\t\t}\n\n\t\t\tif (F.wrap.css('position') === 'fixed' || current.locked) {\n\t\t\t\tpos.top  -= viewport.y;\n\t\t\t\tpos.left -= viewport.x;\n\t\t\t}\n\n\t\t\tpos = {\n\t\t\t\ttop     : getValue(pos.top  - hPadding * current.topRatio),\n\t\t\t\tleft    : getValue(pos.left - wPadding * current.leftRatio),\n\t\t\t\twidth   : getValue(width  + wPadding),\n\t\t\t\theight  : getValue(height + hPadding)\n\t\t\t};\n\n\t\t\treturn pos;\n\t\t},\n\n\t\tstep: function (now, fx) {\n\t\t\tvar ratio,\n\t\t\t\tpadding,\n\t\t\t\tvalue,\n\t\t\t\tprop       = fx.prop,\n\t\t\t\tcurrent    = F.current,\n\t\t\t\twrapSpace  = current.wrapSpace,\n\t\t\t\tskinSpace  = current.skinSpace;\n\n\t\t\tif (prop === 'width' || prop === 'height') {\n\t\t\t\tratio = fx.end === fx.start ? 1 : (now - fx.start) \/ (fx.end - fx.start);\n\n\t\t\t\tif (F.isClosing) {\n\t\t\t\t\tratio = 1 - ratio;\n\t\t\t\t}\n\n\t\t\t\tpadding = prop === 'width' ? current.wPadding : current.hPadding;\n\t\t\t\tvalue   = now - padding;\n\n\t\t\t\tF.skin[ prop ](  getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) ) );\n\t\t\t\tF.inner[ prop ]( getScalar( prop === 'width' ?  value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );\n\t\t\t}\n\t\t},\n\n\t\tzoomIn: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\tstartPos = current.pos,\n\t\t\t\teffect   = current.openEffect,\n\t\t\t\telastic  = effect === 'elastic',\n\t\t\t\tendPos   = $.extend({opacity : 1}, startPos);\n\n\t\t\t\/\/ Remove \"position\" property that breaks older IE\n\t\t\tdelete endPos.position;\n\n\t\t\tif (elastic) {\n\t\t\t\tstartPos = this.getOrigPosition();\n\n\t\t\t\tif (current.openOpacity) {\n\t\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t\t}\n\n\t\t\t} else if (effect === 'fade') {\n\t\t\t\tstartPos.opacity = 0.1;\n\t\t\t}\n\n\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.openSpeed,\n\t\t\t\teasing   : current.openEasing,\n\t\t\t\tstep     : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t});\n\t\t},\n\n\t\tzoomOut: function () {\n\t\t\tvar current  = F.current,\n\t\t\t\teffect   = current.closeEffect,\n\t\t\t\telastic  = effect === 'elastic',\n\t\t\t\tendPos   = {opacity : 0.1};\n\n\t\t\tif (elastic) {\n\t\t\t\tendPos = this.getOrigPosition();\n\n\t\t\t\tif (current.closeOpacity) {\n\t\t\t\t\tendPos.opacity = 0.1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tF.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : current.closeSpeed,\n\t\t\t\teasing   : current.closeEasing,\n\t\t\t\tstep     : elastic ? this.step : null,\n\t\t\t\tcomplete : F._afterZoomOut\n\t\t\t});\n\t\t},\n\n\t\tchangeIn: function () {\n\t\t\tvar current   = F.current,\n\t\t\t\teffect    = current.nextEffect,\n\t\t\t\tstartPos  = current.pos,\n\t\t\t\tendPos    = { opacity : 1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance  = 200,\n\t\t\t\tfield;\n\n\t\t\tstartPos.opacity = 0.1;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tfield = direction === 'down' || direction === 'up' ? 'top' : 'left';\n\n\t\t\t\tif (direction === 'down' || direction === 'right') {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);\n\t\t\t\t\tendPos[ field ]   = '+=' + distance + 'px';\n\n\t\t\t\t} else {\n\t\t\t\t\tstartPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);\n\t\t\t\t\tendPos[ field ]   = '-=' + distance + 'px';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\/\/ Workaround for http:\/\/bugs.jquery.com\/ticket\/12273\n\t\t\tif (effect === 'none') {\n\t\t\t\tF._afterZoomIn();\n\n\t\t\t} else {\n\t\t\t\tF.wrap.css(startPos).animate(endPos, {\n\t\t\t\t\tduration : current.nextSpeed,\n\t\t\t\t\teasing   : current.nextEasing,\n\t\t\t\t\tcomplete : F._afterZoomIn\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tchangeOut: function () {\n\t\t\tvar previous  = F.previous,\n\t\t\t\teffect    = previous.prevEffect,\n\t\t\t\tendPos    = { opacity : 0.1 },\n\t\t\t\tdirection = F.direction,\n\t\t\t\tdistance  = 200;\n\n\t\t\tif (effect === 'elastic') {\n\t\t\t\tendPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';\n\t\t\t}\n\n\t\t\tprevious.wrap.animate(endPos, {\n\t\t\t\tduration : effect === 'none' ? 0 : previous.prevSpeed,\n\t\t\t\teasing   : previous.prevEasing,\n\t\t\t\tcomplete : function () {\n\t\t\t\t\t$(this).trigger('onReset').remove();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t\/*\n\t *\tOverlay helper\n\t *\/\n\n\tF.helpers.overlay = {\n\t\tdefaults : {\n\t\t\tcloseClick : true,      \/\/ if true, fancyBox will be closed when user clicks on the overlay\n\t\t\tspeedOut   : 200,       \/\/ duration of fadeOut animation\n\t\t\tshowEarly  : true,      \/\/ indicates if should be opened immediately or wait until the content is ready\n\t\t\tcss        : {},        \/\/ custom CSS properties\n\t\t\tlocked     : !isTouch,  \/\/ if true, the content will be locked into overlay\n\t\t\tfixed      : true       \/\/ if false, the overlay CSS position property will not be set to \"fixed\"\n\t\t},\n\n\t\toverlay : null,      \/\/ current handle\n\t\tfixed   : false,     \/\/ indicates if the overlay has position \"fixed\"\n\t\tel      : $('html'), \/\/ element that contains \"the lock\"\n\n\t\t\/\/ Public methods\n\t\tcreate : function(opts) {\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\tthis.overlay = $('\u003cdiv class=\"fancybox-overlay\"\u003e\u003c\/div\u003e').appendTo( F.coming ? F.coming.parent : opts.parent );\n\t\t\tthis.fixed   = false;\n\n\t\t\tif (opts.fixed \u0026\u0026 F.defaults.fixed) {\n\t\t\t\tthis.overlay.addClass('fancybox-overlay-fixed');\n\n\t\t\t\tthis.fixed = true;\n\t\t\t}\n\t\t},\n\n\t\topen : function(opts) {\n\t\t\tvar that = this;\n\n\t\t\topts = $.extend({}, this.defaults, opts);\n\n\t\t\tif (this.overlay) {\n\t\t\t\tthis.overlay.unbind('.overlay').width('auto').height('auto');\n\n\t\t\t} else {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (!this.fixed) {\n\t\t\t\tW.bind('resize.overlay', $.proxy( this.update, this) );\n\n\t\t\t\tthis.update();\n\t\t\t}\n\n\t\t\tif (opts.closeClick) {\n\t\t\t\tthis.overlay.bind('click.overlay', function(e) {\n\t\t\t\t\tif ($(e.target).hasClass('fancybox-overlay')) {\n\t\t\t\t\t\tif (F.isActive) {\n\t\t\t\t\t\t\tF.close();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.close();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.overlay.css( opts.css ).show();\n\t\t},\n\n\t\tclose : function() {\n\t\t\tvar scrollV, scrollH;\n\n\t\t\tW.unbind('resize.overlay');\n\n\t\t\tif (this.el.hasClass('fancybox-lock')) {\n\t\t\t\t$('.fancybox-margin').removeClass('fancybox-margin');\n\n\t\t\t\tscrollV = W.scrollTop();\n\t\t\t\tscrollH = W.scrollLeft();\n\n\t\t\t\tthis.el.removeClass('fancybox-lock');\n\n\t\t\t\tW.scrollTop( scrollV ).scrollLeft( scrollH );\n\t\t\t}\n\n\t\t\t$('.fancybox-overlay').remove().hide();\n\n\t\t\t$.extend(this, {\n\t\t\t\toverlay : null,\n\t\t\t\tfixed   : false\n\t\t\t});\n\t\t},\n\n\t\t\/\/ Private, callbacks\n\n\t\tupdate : function () {\n\t\t\tvar width = '100%', offsetWidth;\n\n\t\t\t\/\/ Reset width\/height so it will not mess\n\t\t\tthis.overlay.width(width).height('100%');\n\n\t\t\t\/\/ jQuery does not return reliable result for IE\n\t\t\tif (IE) {\n\t\t\t\toffsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);\n\n\t\t\t\tif (D.width() \u003e offsetWidth) {\n\t\t\t\t\twidth = D.width();\n\t\t\t\t}\n\n\t\t\t} else if (D.width() \u003e W.width()) {\n\t\t\t\twidth = D.width();\n\t\t\t}\n\n\t\t\tthis.overlay.width(width).height(D.height());\n\t\t},\n\n\t\t\/\/ This is where we can manipulate DOM, because later it would cause iframes to reload\n\t\tonReady : function (opts, obj) {\n\t\t\tvar overlay = this.overlay;\n\n\t\t\t$('.fancybox-overlay').stop(true, true);\n\n\t\t\tif (!overlay) {\n\t\t\t\tthis.create(opts);\n\t\t\t}\n\n\t\t\tif (opts.locked \u0026\u0026 this.fixed \u0026\u0026 obj.fixed) {\n\t\t\t\tif (!overlay) {\n\t\t\t\t\tthis.margin = D.height() \u003e W.height() ? $('html').css('margin-right').replace(\"px\", \"\") : false;\n\t\t\t\t}\n\n\t\t\t\tobj.locked = this.overlay.append( obj.wrap );\n\t\t\t\tobj.fixed  = false;\n\t\t\t}\n\n\t\t\tif (opts.showEarly === true) {\n\t\t\t\tthis.beforeShow.apply(this, arguments);\n\t\t\t}\n\t\t},\n\n\t\tbeforeShow : function(opts, obj) {\n\t\t\tvar scrollV, scrollH;\n\n\t\t\tif (obj.locked) {\n\t\t\t\tif (this.margin !== false) {\n\t\t\t\t\t$('*').filter(function(){\n\t\t\t\t\t\treturn ($(this).css('position') === 'fixed' \u0026\u0026 !$(this).hasClass(\"fancybox-overlay\") \u0026\u0026 !$(this).hasClass(\"fancybox-wrap\") );\n\t\t\t\t\t}).addClass('fancybox-margin');\n\n\t\t\t\t\tthis.el.addClass('fancybox-margin');\n\t\t\t\t}\n\n\t\t\t\tscrollV = W.scrollTop();\n\t\t\t\tscrollH = W.scrollLeft();\n\n\t\t\t\tthis.el.addClass('fancybox-lock');\n\n\t\t\t\tW.scrollTop( scrollV ).scrollLeft( scrollH );\n\t\t\t}\n\n\t\t\tthis.open(opts);\n\t\t},\n\n\t\tonUpdate : function() {\n\t\t\tif (!this.fixed) {\n\t\t\t\tthis.update();\n\t\t\t}\n\t\t},\n\n\t\tafterClose: function (opts) {\n\t\t\t\/\/ Remove overlay if exists and fancyBox is not opening\n\t\t\t\/\/ (e.g., it is not being open using afterClose callback)\n\t\t\t\/\/if (this.overlay \u0026\u0026 !F.isActive) {\n\t\t\tif (this.overlay \u0026\u0026 !F.coming) {\n\t\t\t\tthis.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));\n\t\t\t}\n\t\t}\n\t};\n\n\t\/*\n\t *\tTitle helper\n\t *\/\n\n\tF.helpers.title = {\n\t\tdefaults : {\n\t\t\ttype     : 'float', \/\/ 'float', 'inside', 'outside' or 'over',\n\t\t\tposition : 'bottom' \/\/ 'top' or 'bottom'\n\t\t},\n\n\t\tbeforeShow: function (opts) {\n\t\t\tvar current = F.current,\n\t\t\t\ttext    = current.title,\n\t\t\t\ttype    = opts.type,\n\t\t\t\ttitle,\n\t\t\t\ttarget;\n\n\t\t\tif ($.isFunction(text)) {\n\t\t\t\ttext = text.call(current.element, current);\n\t\t\t}\n\n\t\t\tif (!isString(text) || $.trim(text) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttitle = $('\u003cdiv class=\"fancybox-title fancybox-title-' + type + '-wrap\"\u003e' + text + '\u003c\/div\u003e');\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'inside':\n\t\t\t\t\ttarget = F.skin;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'outside':\n\t\t\t\t\ttarget = F.wrap;\n\t\t\t\tbreak;\n\n\t\t\t\tcase 'over':\n\t\t\t\t\ttarget = F.inner;\n\t\t\t\tbreak;\n\n\t\t\t\tdefault: \/\/ 'float'\n\t\t\t\t\ttarget = F.skin;\n\n\t\t\t\t\ttitle.appendTo('body');\n\n\t\t\t\t\tif (IE) {\n\t\t\t\t\t\ttitle.width( title.width() );\n\t\t\t\t\t}\n\n\t\t\t\t\ttitle.wrapInner('\u003cspan class=\"child\"\u003e\u003c\/span\u003e');\n\n\t\t\t\t\t\/\/Increase bottom margin so this title will also fit into viewport\n\t\t\t\t\tF.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttitle[ (opts.position === 'top' ? 'prependTo'  : 'appendTo') ](target);\n\t\t}\n\t};\n\n\t\/\/ jQuery plugin initialization\n\t$.fn.fancybox = function (options) {\n\t\tvar index,\n\t\t\tthat     = $(this),\n\t\t\tselector = this.selector || '',\n\t\t\trun      = function(e) {\n\t\t\t\tvar what = $(this).blur(), idx = index, relType, relVal;\n\n\t\t\t\tif (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) \u0026\u0026 !what.is('.fancybox-wrap')) {\n\t\t\t\t\trelType = options.groupAttr || 'data-fancybox-group';\n\t\t\t\t\trelVal  = what.attr(relType);\n\n\t\t\t\t\tif (!relVal) {\n\t\t\t\t\t\trelType = 'rel';\n\t\t\t\t\t\trelVal  = what.get(0)[ relType ];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (relVal \u0026\u0026 relVal !== '' \u0026\u0026 relVal !== 'nofollow') {\n\t\t\t\t\t\twhat = selector.length ? $(selector) : that;\n\t\t\t\t\t\twhat = what.filter('[' + relType + '=\"' + relVal + '\"]');\n\t\t\t\t\t\tidx  = what.index(this);\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.index = idx;\n\n\t\t\t\t\t\/\/ Stop an event from bubbling if everything is fine\n\t\t\t\t\tif (F.open(what, options) !== false) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\toptions = options || {};\n\t\tindex   = options.index || 0;\n\n\t\tif (!selector || options.live === false) {\n\t\t\tthat.unbind('click.fb-start').bind('click.fb-start', run);\n\n\t\t} else {\n\t\t\tD.undelegate(selector, 'click.fb-start').delegate(selector + \":not('.fancybox-item, .fancybox-nav')\", 'click.fb-start', run);\n\t\t}\n\n\t\tthis.filter('[data-fancybox-start=1]').trigger('click');\n\n\t\treturn this;\n\t};\n\n\t\/\/ Tests that need a body at doc ready\n\tD.ready(function() {\n\t\tvar w1, w2;\n\n\t\tif ( $.scrollbarWidth === undefined ) {\n\t\t\t\/\/ http:\/\/benalman.com\/projects\/jquery-misc-plugins\/#scrollbarwidth\n\t\t\t$.scrollbarWidth = function() {\n\t\t\t\tvar parent = $('\u003cdiv style=\"width:50px;height:50px;overflow:auto\"\u003e\u003cdiv\/\u003e\u003c\/div\u003e').appendTo('body'),\n\t\t\t\t\tchild  = parent.children(),\n\t\t\t\t\twidth  = child.innerWidth() - child.height( 99 ).innerWidth();\n\n\t\t\t\tparent.remove();\n\n\t\t\t\treturn width;\n\t\t\t};\n\t\t}\n\n\t\tif ( $.support.fixedPosition === undefined ) {\n\t\t\t$.support.fixedPosition = (function() {\n\t\t\t\tvar elem  = $('\u003cdiv style=\"position:fixed;top:20px;\"\u003e\u003c\/div\u003e').appendTo('body'),\n\t\t\t\t\tfixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );\n\n\t\t\t\telem.remove();\n\n\t\t\t\treturn fixed;\n\t\t\t}());\n\t\t}\n\n\t\t$.extend(F.defaults, {\n\t\t\tscrollbarWidth : $.scrollbarWidth(),\n\t\t\tfixed  : $.support.fixedPosition,\n\t\t\tparent : $('body')\n\t\t});\n\n\t\t\/\/Get real width of page scroll-bar\n\t\tw1 = $(window).width();\n\n\t\tH.addClass('fancybox-lock-test');\n\n\t\tw2 = $(window).width();\n\n\t\tH.removeClass('fancybox-lock-test');\n\n\t\t$(\"\u003cstyle type='text\/css'\u003e.fancybox-margin{margin-right:\" + (w2 - w1) + \"px;}\u003c\/style\u003e\").appendTo(\"head\");\n\t});\n\n}(window, document, jQuery));\u003c\/script\u003e\n\t\t\n\t\t\u003cscript type=\"text\/javascript\"\u003e\n\t\t\t\n\t\t\tfunction cambia_imagen(el){\n\t\t\n\t\t\t\t\/\/ $(\".galeria\").css('border','');\n\t\t\t\t$(\".galeria\").removeClass('cuadro');\n\t\t\t\t\n\t\t\t\tif(el.dataset){\n\t\t\n\t\t\t\t\t$(\"#zoom_img\").prop('src',el.dataset.image);\n\t\t\t\t\tdocument.querySelector(\"#zoom_img\").dataset.zoomImage = el.dataset.zoomImage;\n\t\t\t\t\t\/\/ el.children[0].style.border=\"1px solid #a7a4a4\";\n\t\t\n\t\t\t\t\tel.children[0].classList.add('cuadro')\n\t\t\t\t\t\n\t\t\n\t\t\t\t}\t\t\n\t\t\t}\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t$(document).ready(function() {\n\t\t\n\t\t\t\t$('#zoom_img').elevateZoom({\n\t\t\n\t\t\t\t\t\tgallery:'galerias', \n\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\tgalleryActiveClass:'active',\n\t\t\t\t\t\timageCrossfade: false,\n\t\t\t\t\t\tzoomWindowHeight:document.getElementById('producto_container').clientHeight-15,\n\t\t\t\t\t\tzoomWindowWidth:680,\n\t\t\t\t\t\tborderSize:0,\n\t\t\t\t\t\teasing:true\n\t\t\t\t});\t\t\n\t\t\t\t\n\t\t\t\t$(\"#zoom_img\").bind(\"click\", function(e) { \n\t\t\t\t\tvar ez = $('#zoom_img').data('elevateZoom');\t\n\t\t\t\t\n\t\t\t\t\t$.fancybox(ez.getGalleryList()); \n\t\t\t\t\treturn false; \n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t$('.fancybox-media').fancybox({\n\t\t\t\t\topenEffect  : 'none',\n\t\t\t\t\tcloseEffect : 'none',\n\t\t\t\t\thelpers : {\n\t\t\t\t\t\tmedia : {}\n\t\t\t\t\t}\n\t\t\t\t});\t\t\t\t\n\t\t\t\t\n\t\t\t});\n\t\t\n\t\n\t\t\u003c\/script\u003e\t\n\t\n\t\n\n\n\u003cstyle\u003e\n.info-text{\n\tfont-family: 'Open Sans', sans-serif;\n    font-size: 15px;\n    text-align: center;\n    font-weight: bolder;\n}\n\nbody{\n\tmargin-bottom: 0px;\n}\n\n.icono_info_product{\n\tmax-width: 60px;\n    max-height: 60px;\n    margin:  15px 15px 10px 0px;\n}\n\n\n.imagenes_galeria{\n  border: 1px solid #e5e5e5;\n  height: 45px;\n  margin-bottom: 8px;\t\n}\n\n.cuadro{\n\tborder: 1px solid #a7a4a4;\n}\n\n.zoomWindowContainer div{\n\tborder: 1px solid #a7a4a4 !important;\t \n}\n\u003c\/style\u003e\n\n\n\n\n\n\u003cdiv class=\"container\"\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdiv class=\"col-md-12\"\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003c!-- Inicia información de producto --\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003cdiv class=\"row\"\u003e\n\t\t\u003cdiv class=\"row\"\u003e\n\t\t\t\u003cdiv class=\"col-md-12\"\u003e\n\t\t\t\t\u003ch4 class=\"text-primary center info-text\"\u003eInformación de Producto\u003c\/h4\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\u003c\/div\u003e\n\t\t\u003cdiv class=\"row\" style=\"margin-bottom: 25px;\"\u003e\n\t\t\t\u003cdiv class=\"col-md-12\"\u003e\n\t\t\t\t\u003ch3\u003eKit de Torre Arriostrada de Piso de 27 m con Tramo STZ30G Galvanizada en Caliente (No incluye retenida).\u003c\/h3\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\u003c\/div\u003e\n\t\t\n\t\t\u003cdiv id=\"producto_container\" class=\"row\"\u003e\n\t\t\t\u003cdiv class=\"col-md-4\"\u003e\n\t\t\t\t\t\t\t\t\u003cimg class=\"img-responsive center-block\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/BancoFotografiasSyscom\/SYSCOMTOWERS\/KTZ30G027\/KTZ30G027-p.PNG\" alt=\"KTZ-30G-027\"\u003e\n\t\t\t\t\t\t\t\t\u003cdiv class=\"row\" style=\"margin:15px 0px;\"\u003e\n\t\t\t\t\t\u003cdiv id=\"galerias\" class=\"col-sm-12\"\u003e\n\n\t\t\t\t\t\t\u003c!-- \t\t\t\t\t\t\u003cimg class=\"imagenes_galeria\" alt=\"Imagen 0\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/BancoFotografiasSyscom\/EPCOM\/LB7TURBOKIT4\/LB7TURBOKIT4-i.PNG\" onclick=\"cambia_imagen(this)\"\u003e\n\t\t\t\t\t\t\u003cimg class=\"imagenes_galeria\" alt=\"Imagen 0\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/BancoFotografiasSyscom\/EPCOM\/LB7TURBOKIT4\/LB7TURBOKIT4-FRENTE-i.PNG\" onclick=\"cambia_imagen(this)\"\u003e --\u003e\n\t\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\t\t\t\t\n\t\t\t\u003c\/div\u003e\n\t\t\t\u003cdiv class=\"col-md-4\"\u003e\n\t\t\t\t\n\t\t\t\t\u003cdiv\u003e\n\t\t\t\t\t\u003cimg class=\"img-responsive img-thumbnail\" style=\"max-width: 170px; max-height: 120px;\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/logotipos\/syscom_towers.png\"\u003e\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003cdiv\u003e\n\t\t\t\t\t\u003cimg src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/tz-30-rojo.png\" class=\"icono_info_product\"\u003e\u003cimg src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/27m.png\" class=\"icono_info_product\"\u003e \t\n\t\t\t\t\u003c\/div\u003e\t\n\t\t\t\t\n\t\t\t\t\u003cdiv\u003e\n\t\t\t\t\t\u003cp\u003eModelo: \u003cspan class=\"modelo-marca\"\u003eKTZ-30G-027\u003c\/span\u003e\u003c\/p\u003e\n\t\t\t\t\t\u003cp\u003eMarca: \u003cspan class=\"modelo-marca\"\u003eSYSCOM TOWERS\u003c\/span\u003e\u003c\/p\u003e\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003cdiv\u003e\n\n\t\t\t\t\t\t\n                   \t\u003cp\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\t \u003ch2 class=\"no_margin_top\"\u003e\u003c\/h2\u003e\n\t\t\t\t\t\t\n                   \t\u003cp\u003e\u003cstrong\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\t \u003ch2 class=\"no_margin_top\"\u003e\u003c\/h2\u003e\n\n                    \n\n\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003cp\u003e\u003c\/p\u003e\n\t\t\t\t\u003cp\u003e\u003c\/p\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\t\u003cdiv class=\"col-md-4\"\u003e\n\t\t\t\t\u003cdiv class=\"row\"\u003e\n\t\t\t\t\t\u003cdiv class=\"col-md-12 default_padding_bottom\"\u003e\n\t\t\t\t\t\t\u003cimg src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/LOG_SYS\/83bf15d853542f15c8b176c6c7e027cb\/logo_83bf15d853542f15c8b176c6c7e027cb.png?v=1603314848\" style=\"max-height: 150px;margin: 10px 0px 0px 40px;\"\u003e\t\t\t\t\t\u003c\/div\u003e\n\t\t\t\t\u003c\/div\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\u003c\/div\u003e\n\t\u003c\/div\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003c!-- Termina información de producto --\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\n\n\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003c!-- Inicia especificaciones de producto --\u003e\n\t\u003c!-- ------------------------------ --\u003e\n\t\u003cdiv class=\"row \"\u003e\n\t\t\u003cdiv class=\"col-md-12\"\u003e\n\t\t\t\u003cdiv class=\"row\"\u003e\n\t\t\t\t\u003ch3 class=\"text-primary\" style=\"font-family: 'Open Sans',sans-serif;\"\u003eEspecificaciones:\u003c\/h3\u003e\n\t\t\t\u003c\/div\u003e\n\t\t\t\u003cdiv class=\"row well\"\u003e \u003c!-- Contenedor de specs --\u003e\n\n\t\t\t\t\t\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003ch3 style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: inherit; margin-top: 20px; margin-bottom: 10px; font-size: 24px;\"\u003e\u003cimg style=\"box-sizing: border-box; border: 0px; vertical-align: middle;\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/logotipos\/syscom_towers.png\" width=\"300\"\u003e\u003c\/h3\u003e\n\u003ch3 style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: inherit; margin-top: 20px; margin-bottom: 10px; font-size: 24px;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cstrong\u003eCaracterísticas Destacadas: \u003c\/strong\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cul style=\"box-sizing: border-box; margin-top: 0px; margin-bottom: 10px;\"\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eProducto elaborado Bajo Normativa \u003cspan style=\"box-sizing: border-box; color: #d10404;\"\u003e\u003cstrong style=\"box-sizing: border-box;\"\u003eISO 9001:2015.\u003c\/strong\u003e\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eGran Elevación \/ Bajo costo.\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003e100% Inspección de Ensamble Tramo - Tramo.\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eGalvanizado por Inmersión en Caliente acorde a \u003cstrong style=\"box-sizing: border-box;\"\u003e\u003cspan style=\"box-sizing: border-box; color: #d10404;\"\u003eNMX-H-004-SCFI-2008\u003c\/span\u003e.\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box; text-align: left;\"\u003eIdeal para zonas costeras de alta humedad o áreas industriales. \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: inherit; margin-top: 20px; margin-bottom: 10px; font-size: 24px;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cstrong\u003eCaracterísticas Físicas:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cul style=\"box-sizing: border-box; margin-top: 0px; margin-bottom: 10px;\"\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eCarga Axial Máxima: 200 Kg. \u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eAltura: 27 metros (9 tramos).\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eResistencia al viento: 200 km \/hr.\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eProtección anticorrosiva: Galvanizado por inmersión en caliente (NMX-H-004-SCFI-2008).\u003c\/li\u003e\n\u003cli style=\"box-sizing: border-box;\"\u003eAplicación: Intemperie (Zonas Húmedas).  \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3 style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: inherit; margin-top: 20px; margin-bottom: 10px; font-size: 24px;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cstrong\u003eIncluye los siguientes componentes:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003ctable style=\"border-collapse: collapse; width: 568px; height: 133px;\" border=\"0\" width=\"549\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n\u003ccolgroup\u003e\n\u003ccol style=\"width: 60pt;\" width=\"80\"\u003e \u003ccol style=\"mso-width-source: userset; mso-width-alt: 4644; width: 95pt;\" width=\"127\"\u003e \u003ccol style=\"mso-width-source: userset; mso-width-alt: 12507; width: 257pt;\" width=\"342\"\u003e \u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr style=\"height: 16px;\"\u003e\n\u003ctd class=\"xl67\" style=\"height: 16px; width: 90.625px; text-align: center;\" height=\"20\"\u003e\u003cspan style=\"color: #000000;\"\u003e\u003cstrong\u003eCantidad\u003c\/strong\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"xl67\" style=\"width: 126.656px; height: 16px;\"\u003e\u003cspan style=\"color: #000000;\"\u003e\u003cstrong\u003eModelo\u003c\/strong\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003ctd class=\"xl67\" style=\"width: 350.719px; height: 16px;\"\u003e\u003cspan style=\"color: #000000;\"\u003e\u003cstrong\u003eDescripción\u003c\/strong\u003e\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 17px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 15px; text-align: center; width: 90.625px;\" height=\"20\"\u003e9\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"width: 126.656px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSTZ30G\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 15px;\"\u003eTramo de torre de 30 cm de ancho de cara.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 15px; text-align: center; width: 90.625px;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"width: 126.656px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSCZ30PG\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 15px;\"\u003eCopete de torre de 30 cm con opresor para pararrayo.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 18px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 18px; text-align: center; width: 90.625px;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"width: 126.656px; height: 18px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSBA30G\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 18px;\"\u003eBase para torre de 30 cm.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 15px; text-align: center; width: 90.625px;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"width: 126.656px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSAB30G\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 15px;\"\u003eAncla para base de torre.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 14px; text-align: center; width: 90.625px;\" height=\"20\"\u003e5\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"width: 126.656px; height: 14px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSJB30G\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 14px;\"\u003eBrida de sujeción de Retenida.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 15px; text-align: center; width: 90.625px;\" height=\"20\"\u003e3\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"width: 126.656px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSAP02G\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 15px;\"\u003eAncla de piso para Retenida.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl66\" style=\"height: 15px; text-align: center; width: 90.625px;\" height=\"20\"\u003e30\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"width: 126.656px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eCUELLO-14-HDG\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 15px;\"\u003eCuello para cable de retenida\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl66\" style=\"height: 10px; text-align: center; width: 90.625px;\" height=\"20\"\u003e90\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"width: 126.656px; height: 10px;\"\u003e\u003ca\u003eNUDO-316-FJG\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"width: 350.719px; height: 10px;\"\u003eAbrazadera tipo perro de 3\/16\".\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e\u003cspan style=\"box-sizing: border-box; color: #c0392b;\"\u003e\u003cstrong style=\"box-sizing: border-box;\"\u003eNo incluye cable de retenida.\u003c\/strong\u003e\u003c\/span\u003e Se recomiendan 430 metros de retenida de 1\/8\" \u003cspan style=\"color: #000000;\"\u003e(\u003ca target=\"_blank\" rel=\"noopener\"\u003eSRET-318-CAM\u003c\/a\u003e)\u003c\/span\u003e o diámetros superiores.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px;\"\u003e\u003cspan style=\"color: #7e8c8d;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cstrong\u003eNo incluye Tensores\u003c\/strong\u003e\u003c\/span\u003e.\u003c\/span\u003e Se recomiendan 15 tensores de 1\/2\" x 6\". (\u003ca target=\"_blank\" rel=\"noopener\"\u003eTEN1\/2X6OGJ\u003c\/a\u003e o \u003ca target=\"_blank\" rel=\"noopener\"\u003eTEN1\/2X6OQJ\u003c\/a\u003e).\u003c\/p\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px;\"\u003e\u003cspan style=\"color: #000000; font-size: 12pt;\"\u003e\u003cem style=\"box-sizing: border-box;\"\u003e**El \u003cstrong style=\"box-sizing: border-box;\"\u003eNO\u003c\/strong\u003e usar accesorios de instalación como Bridas, Base de torre, Ancla de torre o Anclajes de Retenida, se considera una pérdida de garantía del equipo y cualquier adaptación adicional queda a responsabilidad del instalador.**\u003c\/em\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003ch3 class=\"bloque3\" style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin-top: 20px; margin-bottom: 10px; font-size: 24px; background-color: #ffffff;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cstrong\u003eAccesorios complementarios \u003cspan style=\"font-size: 12pt; color: #95a5a6;\"\u003e(No incluidos)\u003c\/span\u003e:\u003c\/strong\u003e \u003c\/span\u003e\u003c\/h3\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: bold; line-height: 18px;\"\u003eSistema de Señalización\/Iluminación  \u003cspan style=\"font-size: 10pt; color: #95a5a6;\"\u003e(No incluido)\u003c\/span\u003e:\u003c\/span\u003e \u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e \u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003ctable style=\"border-collapse: collapse; width: 550pt; height: 40px;\" border=\"0\" width=\"733\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n\u003ccolgroup\u003e\n\u003ccol style=\"width: 60pt;\" width=\"80\"\u003e \u003ccol style=\"mso-width-source: userset; mso-width-alt: 4644; width: 95pt;\" width=\"127\"\u003e \u003ccol style=\"mso-width-source: userset; mso-width-alt: 19236; width: 395pt;\" width=\"526\"\u003e \u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl66\" style=\"height: 15px; width: 83.5156px; text-align: center;\" height=\"20\"\u003e\u003cstrong\u003e\u003cspan style=\"color: #000000;\"\u003eCantidad\u003c\/span\u003e\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"width: 126.188px; height: 15px;\"\u003e\u003cstrong\u003e\u003cspan style=\"color: #000000;\"\u003eModelo\u003c\/span\u003e\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"width: 523.625px; height: 15px;\"\u003e\u003cstrong\u003e\u003cspan style=\"color: #000000;\"\u003eDescripción\u003c\/span\u003e\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 15px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 15px; text-align: center; width: 83.5156px;\" height=\"20\"\u003e2\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"height: 15px; width: 126.188px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eEIGSLSE\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"height: 15px; width: 523.625px;\"\u003e\u003cspan style=\"color: #000000;\"\u003eEstrobo tipo LED Autónomo con fotocelda, panel solar y batería. Tipo L810.\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 10px;\"\u003e\n\u003ctd class=\"xl65\" style=\"height: 10px; width: 83.5156px; text-align: center;\" height=\"20\"\u003e2\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"height: 10px; width: 126.188px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eHLU3R2\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"height: 10px; width: 523.625px;\"\u003e\u003cspan style=\"color: #000000;\"\u003eMontaje para lámpara de obstrucción EIGSLSE\u003c\/span\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\u003cspan style=\"color: #000000;\"\u003e\u003cem\u003e\u003cspan style=\"font-size: 13.3333px;\"\u003e*\u003c\/span\u003e\u003cspan style=\"font-size: 12pt;\"\u003eLa norma de señalización dicta que la torre debe estar pintada en 7 franjas de igual tamaño; 4 franjas en tono naranja-rojizo  y 3 en blanco.\u003c\/span\u003e\u003c\/em\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e \u003c\/p\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\u003cspan style=\"color: #c0392b; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: bold; font-size: 14px;\"\u003eSistema de línea de vida\u003c\/span\u003e\u003cspan style=\"font-size: 10pt; color: #7e8c8d;\"\u003e (No incluido)\u003c\/span\u003e\u003cspan style=\"color: #c0392b; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: bold; font-size: 14px;\"\u003e:\u003c\/span\u003e\u003c\/p\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e\n\u003ctable style=\"border-collapse: collapse; border-spacing: 0px; background-color: transparent; width: 406pt; height: 120px;\" border=\"0\" width=\"540\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n\u003ccolgroup style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box; width: 47pt;\" width=\"62\"\u003e\n\u003ccol style=\"box-sizing: border-box; width: 103pt;\" width=\"137\"\u003e\n\u003ccol style=\"box-sizing: border-box; width: 256pt;\" width=\"341\"\u003e\n\u003c\/colgroup\u003e\n\u003ctbody style=\"box-sizing: border-box;\"\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl67\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e\u003cstrong\u003eCantidad\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"xl68\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003cstrong\u003eModelo \u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd class=\"xl69\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003e\u003cstrong\u003eDescripción\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSHE-LV\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003ePar de herrajes de sujeción\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eS-GULV\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003eGuía para línea\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e30\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003e\u003cspan style=\"box-sizing: border-box;\"\u003eSRET-338CAM\u003c\/span\u003e\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003eCable de 3\/8\" \u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e6\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eNUDO-38FJG\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003eNudo forjado 3\/8\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e2\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eCUELLO-38-HDG\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003eCuello 3\/8\"\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eTRY-ACC-SLIDER\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003e(Opcional) Carro de Seguridad para Instalador.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 15pt;\"\u003e\n\u003ctd class=\"xl64\" style=\"box-sizing: border-box; padding: 0px; height: 15px; width: 79.0156px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd class=\"xl65\" style=\"box-sizing: border-box; padding: 0px; width: 133.609px; height: 15px;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003eSYS-USA7B\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd class=\"xl66\" style=\"box-sizing: border-box; padding: 0px; width: 328.703px; height: 15px;\"\u003e(Opcional) Arnés de Suspención.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px;\"\u003e\u003cspan style=\"font-size: 12pt; color: #000000;\"\u003e\u003cem\u003e*La NOM-009 marca como obligatorio el uso de sistemas que frenen la caída accidental en una estructura.\u003c\/em\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ch3 class=\"bloque3\" style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin-top: 20px; margin-bottom: 10px; font-size: 24px; background-color: #ffffff;\"\u003e\n\u003cspan style=\"box-sizing: border-box; color: #2880b9; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; font-weight: bold; line-height: 18px;\"\u003e\u003cspan style=\"box-sizing: border-box; color: #e74c3c;\"\u003e¡Nuevo!\u003c\/span\u003e \u003cspan style=\"box-sizing: border-box; color: #000000;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003eKit Pararrayo + Tierra física con Cable. Marca LINKEDPRO\u003c\/span\u003e \u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"box-sizing: border-box; color: #7e8c8d; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; line-height: 18px;\"\u003e\u003cspan style=\"box-sizing: border-box;\"\u003e(No incluido)\u003c\/span\u003e\u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\u003ca target=\"_blank\" rel=\"noopener\"\u003e\u003cstrong style=\"box-sizing: border-box;\"\u003e\u003cspan style=\"font-size: 10pt;\"\u003eKLP-TZ27-PRO\u003c\/span\u003e.\u003c\/strong\u003e\u003c\/a\u003e- ¡Todo incluido! Ideal para torres de 27 m con dipolo corona, cableado y electrodos con 10 años de garantía.\u003c\/p\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\u003cem style=\"box-sizing: border-box;\"\u003eO también puede cotizar individualmente los siguientes componentes de Tierra física o Pararrayo:\u003c\/em\u003e\u003c\/p\u003e\n\u003ch3 class=\"bloque3\" style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: #333333; margin-top: 20px; margin-bottom: 10px; font-size: 24px; background-color: #ffffff;\"\u003e\n\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; font-weight: bold; line-height: 18px;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003eSistema de Tierra Física Recomendada para Torre y Equipo montado en ella \u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; line-height: 18px;\"\u003e\u003cspan style=\"color: #7e8c8d;\"\u003e(No incluido)\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; font-weight: bold; line-height: 18px;\"\u003e:\u003c\/span\u003e\u003cspan style=\"box-sizing: border-box; line-height: 20.8px;\"\u003e \u003c\/span\u003e\n\u003c\/h3\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003ctable style=\"border-collapse: collapse; border-spacing: 0px; background-color: transparent; width: 440px; height: 148px;\" border=\"0\" width=\"440\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n\u003ccolgroup style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box;\"\u003e\n\u003c\/colgroup\u003e\n\u003ctbody style=\"box-sizing: border-box;\"\u003e\n\u003ctr style=\"box-sizing: border-box;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 68.2969px;\" height=\"20\"\u003e\u003cstrong\u003eCantidad\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 90.4062px; height: 20px;\"\u003e\u003cstrong\u003eModelo \u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 281.297px; height: 20px;\"\u003e\u003cstrong\u003eDescripción\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 34px; width: 68.2969px; text-align: center;\" height=\"34\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 90.4062px; height: 34px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TG45AB-TOTAL-GROUND-75917.html\"\u003eTG45AB\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 281.297px; height: 34px;\"\u003eElectrodo de puesta a tierra de 45 A con Electrodo, Filtro y Compuesto H2Ohm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 68.2969px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 90.4062px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/S610-TOTAL-GROUND-75929.html\"\u003eS610\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 281.297px; height: 20px;\"\u003eRegistro plástico.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 68.2969px; text-align: center;\" height=\"20\"\u003e3\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 90.4062px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGCR11-TOTAL-GROUND-76026.html\"\u003eTGCR11\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 281.297px; height: 20px;\"\u003eConector de Ojo \u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 68.2969px; text-align: center;\" height=\"20\"\u003e2\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 90.4062px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGAB18-TOTAL-GROUND-76028.html\"\u003eTGAB18\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 281.297px; height: 20px;\"\u003eConector para Varilla\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 34px; width: 68.2969px; text-align: center;\" height=\"34\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 90.4062px; height: 34px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGBUSG10-TOTAL-GROUND-75914.html\"\u003eTGBUSG10\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 281.297px; height: 34px;\"\u003eBarra de Unión con Aisladores de 1000A de Capacidad (Sin Gabinete)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e* Se recomienda el uso de cable de cobre forrado cal. 4 AWG (\u003ca style=\"box-sizing: border-box; background-color: transparent;\"\u003eSLY-287-GRN\u003c\/a\u003e) para aterrizaje del electrodo hasta la torre. Para equipos en torre se puede utilizar cal. 6 AWG (\u003ca style=\"box-sizing: border-box; background-color: transparent;\"\u003eSLY-291-GRN\u003c\/a\u003e).\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003cbr style=\"box-sizing: border-box;\"\u003e\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: bold; line-height: 18px;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003eSistema de Pararrayos Básico Recomendado paraTorre\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003e\u003cspan style=\"color: #7e8c8d;\"\u003e (No incluido)\u003c\/span\u003e\u003c\/span\u003e\u003cspan style=\"box-sizing: border-box; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: bold; line-height: 18px;\"\u003e:\u003c\/span\u003e \n\u003ctable style=\"border-collapse: collapse; border-spacing: 0px; background-color: transparent; width: 521px; height: 205px;\" border=\"0\" width=\"385\" cellspacing=\"0\" cellpadding=\"0\"\u003e\n\u003ccolgroup style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box;\"\u003e\n\u003ccol style=\"box-sizing: border-box;\"\u003e\n\u003c\/colgroup\u003e\n\u003ctbody style=\"box-sizing: border-box;\"\u003e\n\u003ctr style=\"box-sizing: border-box; height: 20px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 80px; text-align: center;\" height=\"20\"\u003e\u003cstrong\u003eCantidad\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 20px;\"\u003e\u003cstrong\u003eModelo \u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 20px;\"\u003e\u003cstrong\u003eDescripción\u003c\/strong\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 34px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 34px; width: 80px; text-align: center;\" height=\"34\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 34px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGTDPC-TOTAL-GROUND-76020.html\"\u003eTGTDPC\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 34px;\"\u003ePunta Pararrayo con Mástil de Aluminio (MASTIL1.2)\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 51px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 51px; width: 80px; text-align: center;\" height=\"51\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 51px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TG45AB-TOTAL-GROUND-75917.html\"\u003eTG45AB\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 51px;\"\u003eElectrodo de 45 Amp. Con un saco de compuesto mejorador de impedancia(H2OHM), brújula y nivel.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 20px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 80px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/S610-TOTAL-GROUND-75929.html\"\u003eS610\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 20px;\"\u003eRegistro plástico chico.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 20px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 80px; text-align: center;\" height=\"20\"\u003e1\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/ANTIOX-TOTAL-GROUND-75931.html\"\u003eANTIOX\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 20px;\"\u003eAerosol para protección de terminales.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 20px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 80px; text-align: center;\" height=\"20\"\u003e3\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGCR11-TOTAL-GROUND-76026.html\"\u003eTGCR11\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 20px;\"\u003eConector de Ojo. \u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 20px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 80px; text-align: center;\" height=\"20\"\u003e2\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGAB18-TOTAL-GROUND-76028.html\"\u003eTGAB18\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 20px;\"\u003eConector para Varilla.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"box-sizing: border-box; height: 20px;\"\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; height: 20px; width: 80px; text-align: center;\" height=\"20\"\u003e18\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 80px; height: 20px;\"\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"http:\/\/www.syscom.mx\/producto\/TGAC-TOTAL-GROUND-76016.html\"\u003eTGAC\u003c\/a\u003e\u003c\/td\u003e\n\u003ctd style=\"box-sizing: border-box; padding: 0px; width: 361px; height: 20px;\"\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px;\"\u003eAislador para torre.\u003c\/p\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e*La punta tipo dipolo ofrece un cono de protección de 72° debajo del serpentín. Se recomienda para zonas de baja incidencia de rayos.\u003cbr style=\"box-sizing: border-box;\"\u003e*Se recomienda cable de cobre calibre 2\/0 para realizar la integración (\u003ca style=\"box-sizing: border-box; background-color: transparent;\"\u003eSLY-346-BLK\u003c\/a\u003e). Considerando una instalación del electrodo a máximo 3 metros de la torre se usan aprox. 8 metros.\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e \u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003eVer diagrama de conexión de Tierra Física + Pararrayo en el siguiente \u003cstrong\u003e\u003ca style=\"box-sizing: border-box; background-color: transparent;\" href=\"https:\/\/ftp3.syscom.mx\/usuarios\/ftp\/2019\/03\/27\/2ed55\/01REV02-DIPOLO%20CORONA%20Y%20EQUIPO%20EN%20TORRE.pdf\"\u003eDIAGRAMA\u003c\/a\u003e.\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; background-color: #ffffff;\"\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e\n\u003ch3 style=\"box-sizing: border-box; font-family: Rubik, Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: inherit; margin-top: 20px; margin-bottom: 10px; font-size: 24px;\"\u003e\u003cspan style=\"color: #c0392b;\"\u003e\u003cstrong\u003eRecomendaciones:\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\u003cspan style=\"box-sizing: border-box; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003eAsegúrese de que la instalación sea realizada por un profesional capacitado. \u003c\/span\u003e\u003cbr style=\"box-sizing: border-box; margin: 0px; padding: 0px; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003e\u003cspan style=\"box-sizing: border-box; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003ePrograme un plan de mantenimiento para revisión de tensiones en retenidas y ajuste de tornillería. \u003c\/span\u003e\u003cbr style=\"box-sizing: border-box; margin: 0px; padding: 0px; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003e\u003cspan style=\"box-sizing: border-box; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003eNo instalar paneles solares a más de 6 metros de altura. Revisar la compatibilidad entre celdas solares y montajes. \u003c\/span\u003e\u003cbr style=\"box-sizing: border-box; margin: 0px; padding: 0px; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003e\u003cspan style=\"box-sizing: border-box; color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; line-height: 18px;\"\u003eDebe de realizarse un estudio de esfuerzos cuando se coloque una carga excéntrica en torre. Ésta puede causar torsión y flexión excesiva en torre causando fallas estructurales. \u003cbr style=\"box-sizing: border-box;\"\u003eLa torre debe ser pintada en tono \u003cstrong style=\"box-sizing: border-box;\"\u003enaranja-rojizo y blanco\u003c\/strong\u003e, en 7 franjas de igual altura empezando y terminando en naranja-rojizo (SYSCOM no realiza el trabajo de pintura de la torre).\u003cbr style=\"box-sizing: border-box;\"\u003eSe recomienda iluminar la torre al menos en la punta con una lámpara color rojo.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e \u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\"\u003e\u003cspan style=\"box-sizing: border-box; color: inherit; font-family: Rubik, Helvetica, Arial, sans-serif; font-size: 24px;\"\u003eDiagrama Representativo: Instalación de Retenida Versión 2.0\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\"\u003e \u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\"\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e\n\u003cp style=\"box-sizing: border-box; margin: 0px 0px 10px;\"\u003e\u003cimg style=\"box-sizing: border-box; border: 0px; vertical-align: middle;\" src=\"https:\/\/ftp3.syscom.mx\/usuarios\/fotos\/KTZ30G030\/75810-recomendaci%C3%B3n_de_instalaci%C3%B3n_de_retenida_2.0.png\" alt=\"\" width=\"1000\" height=\"637\"\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\"\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e\u003cspan style=\"color: #4c4c4c; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-weight: bold;\"\u003eImágenes de Instalación\u003c\/span\u003e\u003c\/div\u003e\n\u003cdiv class=\"bloque3\" style=\"box-sizing: border-box;\"\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cimg class=\"fr-fic fr-dii\" style=\"width: 500px; height: 806px;\" src=\"http:\/\/ftp3.syscom.mx\/usuarios\/dcarreon\/TORRES\/ARRIOSTRADAS\/TORRES%20IMAGEN.png\" alt=\"LOGO ROHN\"\u003e\u003c\/p\u003e\n\t\t\t\t\t\u003c!-- \u003ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/-r-N7C-5xQc\" width=\"560\"\u003e\u003c\/iframe\u003e\u003ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/GkYn2qjXos8\" width=\"560\"\u003e\u003c\/iframe\u003e --\u003e\n\n\n\n\t\t\t\u003c\/div\u003e\n\n\t\t\u003c\/div\u003e\n\t\u003c\/div\u003e\n\n\n\n\n\u003c\/div\u003e \u003c!-- .\/ col-md-12 --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\n\t\u003cscript type=\"text\/javascript\"\u003ewindow.NREUM||(NREUM={});NREUM.info={\"beacon\":\"bam.nr-data.net\",\"licenseKey\":\"NRJS-624cf1b7bf4add3973c\",\"applicationID\":\"783538228\",\"transactionName\":\"Z1QENxRYXUZTVkxcXF4eMxEPFlpbVlBAG0NYQQ==\",\"queueTime\":0,\"applicationTime\":21,\"atts\":\"SxMHQVxCTkg=\",\"errorBeacon\":\"bam.nr-data.net\",\"agent\":\"\"}\u003c\/script\u003e\n\t\n\u003cscript\u003edocument.cookie = \"nav_id_2=;path=\/;\";document.cookie = \"nav_id_3=;path=\/;\";\u003c\/script\u003e        \n    \u003cscript\u003e\n  var idioma_global =\"es\";\n\u003c\/script\u003e\n\n\n\u003c\/body\u003e","brand":"SYSCOM TOWERS","offers":[{"title":"KTZ-30G-027 \/ 43222903","offer_id":47563740545303,"sku":"75833","price":33157.49,"currency_code":"MXN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0832\/7698\/8695\/products\/KTZ30G027-p.png?v=1698439385","url":"https:\/\/controldeaccesos.com.mx\/products\/75833","provider":"controldeaccesos.com.mx","version":"1.0","type":"link"}