CINXE.COM
Comune di Scarnafigi - sito internet istituzionale - Regione Piemonte - Provincia di Cuneo
<!DOCTYPE html> <html lang="it"> <head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta http-equiv="Content-Language" content="en" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title> Comune di Scarnafigi - sito internet istituzionale - Regione Piemonte - Provincia di Cuneo </title> <!-- FAVICONS --> <link rel="shortcut icon" href="/img/comune_iconified/favicon.ico" type="image/x-icon" /><link rel="apple-touch-icon" href="/img/comune_iconified/apple-touch-icon.png" /><link rel="apple-touch-icon" sizes="57x57" href="/img/comune_iconified/apple-touch-icon-57x57.png" /><link rel="apple-touch-icon" sizes="72x72" href="/img/comune_iconified/apple-touch-icon-72x72.png" /><link rel="apple-touch-icon" sizes="76x76" href="/img/comune_iconified/apple-touch-icon-76x76.png" /><link rel="apple-touch-icon" sizes="114x114" href="/img/comune_iconified/apple-touch-icon-114x114.png" /><link rel="apple-touch-icon" sizes="120x120" href="/img/comune_iconified/apple-touch-icon-120x120.png" /><link rel="apple-touch-icon" sizes="144x144" href="/img/comune_iconified/apple-touch-icon-144x144.png" /><link rel="apple-touch-icon" sizes="152x152" href="/img/comune_iconified/apple-touch-icon-152x152.png" /><link rel="apple-touch-icon" sizes="180x180" href="/img/comune_iconified/apple-touch-icon-180x180.png" /><meta name="viewport" content="width=device-width,initial-scale=1" /><meta name="description" content="Comune di Scarnafigi - sito internet istituzionale - Regione Piemonte - Provincia di Cuneo" /><link id="linkcsshome" rel="stylesheet" href="/assets/bootstrap-italia/dist/css/bootstrap-italia-comuni.min.css" /><link rel="stylesheet" href="/assets/css/style.css" /><link rel="stylesheet" href="/cic.css" /> <!-- Jquery - temporaneamente inline --> <script>/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ !function (e, t) { "use strict"; "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function (e) { if (!e.document) throw new Error("jQuery requires a window with a document"); return t(e) } : t(e) }("undefined" != typeof window ? window : this, function (C, e) { "use strict"; var t = [], r = Object.getPrototypeOf, s = t.slice, g = t.flat ? function (e) { return t.flat.call(e) } : function (e) { return t.concat.apply([], e) }, u = t.push, i = t.indexOf, n = {}, o = n.toString, y = n.hasOwnProperty, a = y.toString, l = a.call(Object), v = {}, m = function (e) { return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item }, x = function (e) { return null != e && e === e.window }, E = C.document, c = { type: !0, src: !0, nonce: !0, noModule: !0 }; function b(e, t, n) { var r, i, o = (n = n || E).createElement("script"); if (o.text = e, t) for (r in c) (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i); n.head.appendChild(o).parentNode.removeChild(o) } function w(e) { return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object" : typeof e } var f = "3.6.1", S = function (e, t) { return new S.fn.init(e, t) }; function p(e) { var t = !!e && "length" in e && e.length, n = w(e); return !m(e) && !x(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e) } S.fn = S.prototype = { jquery: f, constructor: S, length: 0, toArray: function () { return s.call(this) }, get: function (e) { return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e] }, pushStack: function (e) { var t = S.merge(this.constructor(), e); return t.prevObject = this, t }, each: function (e) { return S.each(this, e) }, map: function (n) { return this.pushStack(S.map(this, function (e, t) { return n.call(e, t, e) })) }, slice: function () { return this.pushStack(s.apply(this, arguments)) }, first: function () { return this.eq(0) }, last: function () { return this.eq(-1) }, even: function () { return this.pushStack(S.grep(this, function (e, t) { return (t + 1) % 2 })) }, odd: function () { return this.pushStack(S.grep(this, function (e, t) { return t % 2 })) }, eq: function (e) { var t = this.length, n = +e + (e < 0 ? t : 0); return this.pushStack(0 <= n && n < t ? [this[n]] : []) }, end: function () { return this.prevObject || this.constructor() }, push: u, sort: t.sort, splice: t.splice }, S.extend = S.fn.extend = function () { var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1; for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || m(a) || (a = {}), s === u && (a = this, s--); s < u; s++)if (null != (e = arguments[s])) for (t in e) r = e[t], "__proto__" !== t && a !== r && (l && r && (S.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || S.isPlainObject(n) ? n : {}, i = !1, a[t] = S.extend(l, o, r)) : void 0 !== r && (a[t] = r)); return a }, S.extend({ expando: "jQuery" + (f + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (e) { throw new Error(e) }, noop: function () { }, isPlainObject: function (e) { var t, n; return !(!e || "[object Object]" !== o.call(e)) && (!(t = r(e)) || "function" == typeof (n = y.call(t, "constructor") && t.constructor) && a.call(n) === l) }, isEmptyObject: function (e) { var t; for (t in e) return !1; return !0 }, globalEval: function (e, t, n) { b(e, { nonce: t && t.nonce }, n) }, each: function (e, t) { var n, r = 0; if (p(e)) { for (n = e.length; r < n; r++)if (!1 === t.call(e[r], r, e[r])) break } else for (r in e) if (!1 === t.call(e[r], r, e[r])) break; return e }, makeArray: function (e, t) { var n = t || []; return null != e && (p(Object(e)) ? S.merge(n, "string" == typeof e ? [e] : e) : u.call(n, e)), n }, inArray: function (e, t, n) { return null == t ? -1 : i.call(t, e, n) }, merge: function (e, t) { for (var n = +t.length, r = 0, i = e.length; r < n; r++)e[i++] = t[r]; return e.length = i, e }, grep: function (e, t, n) { for (var r = [], i = 0, o = e.length, a = !n; i < o; i++)!t(e[i], i) !== a && r.push(e[i]); return r }, map: function (e, t, n) { var r, i, o = 0, a = []; if (p(e)) for (r = e.length; o < r; o++)null != (i = t(e[o], o, n)) && a.push(i); else for (o in e) null != (i = t(e[o], o, n)) && a.push(i); return g(a) }, guid: 1, support: v }), "function" == typeof Symbol && (S.fn[Symbol.iterator] = t[Symbol.iterator]), S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) { n["[object " + t + "]"] = t.toLowerCase() }); var d = function (n) { var e, d, b, o, i, h, f, g, w, u, l, T, C, a, E, y, s, c, v, S = "sizzle" + 1 * new Date, p = n.document, k = 0, r = 0, m = ue(), x = ue(), A = ue(), N = ue(), j = function (e, t) { return e === t && (l = !0), 0 }, D = {}.hasOwnProperty, t = [], q = t.pop, L = t.push, H = t.push, O = t.slice, P = function (e, t) { for (var n = 0, r = e.length; n < r; n++)if (e[n] === t) return n; return -1 }, R = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", M = "[\\x20\\t\\r\\n\\f]", I = "(?:\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", W = "\\[" + M + "*(" + I + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + I + "))|)" + M + "*\\]", F = ":(" + I + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + W + ")*)|.*)\\)|)", $ = new RegExp(M + "+", "g"), B = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"), _ = new RegExp("^" + M + "*," + M + "*"), z = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"), U = new RegExp(M + "|>"), X = new RegExp(F), V = new RegExp("^" + I + "$"), G = { ID: new RegExp("^#(" + I + ")"), CLASS: new RegExp("^\\.(" + I + ")"), TAG: new RegExp("^(" + I + "|[*])"), ATTR: new RegExp("^" + W), PSEUDO: new RegExp("^" + F), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"), bool: new RegExp("^(?:" + R + ")$", "i"), needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i") }, Y = /HTML$/i, Q = /^(?:input|select|textarea|button)$/i, J = /^h\d$/i, K = /^[^{]+\{\s*\[native \w/, Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ee = /[+~]/, te = new RegExp("\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\([^\\r\\n\\f])", "g"), ne = function (e, t) { var n = "0x" + e.slice(1) - 65536; return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320)) }, re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, ie = function (e, t) { return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e }, oe = function () { T() }, ae = be(function (e) { return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase() }, { dir: "parentNode", next: "legend" }); try { H.apply(t = O.call(p.childNodes), p.childNodes), t[p.childNodes.length].nodeType } catch (e) { H = { apply: t.length ? function (e, t) { L.apply(e, O.call(t)) } : function (e, t) { var n = e.length, r = 0; while (e[n++] = t[r++]); e.length = n - 1 } } } function se(t, e, n, r) { var i, o, a, s, u, l, c, f = e && e.ownerDocument, p = e ? e.nodeType : 9; if (n = n || [], "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) return n; if (!r && (T(e), e = e || C, E)) { if (11 !== p && (u = Z.exec(t))) if (i = u[1]) { if (9 === p) { if (!(a = e.getElementById(i))) return n; if (a.id === i) return n.push(a), n } else if (f && (a = f.getElementById(i)) && v(e, a) && a.id === i) return n.push(a), n } else { if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n; if ((i = u[3]) && d.getElementsByClassName && e.getElementsByClassName) return H.apply(n, e.getElementsByClassName(i)), n } if (d.qsa && !N[t + " "] && (!y || !y.test(t)) && (1 !== p || "object" !== e.nodeName.toLowerCase())) { if (c = t, f = e, 1 === p && (U.test(t) || z.test(t))) { (f = ee.test(t) && ve(e.parentNode) || e) === e && d.scope || ((s = e.getAttribute("id")) ? s = s.replace(re, ie) : e.setAttribute("id", s = S)), o = (l = h(t)).length; while (o--) l[o] = (s ? "#" + s : ":scope") + " " + xe(l[o]); c = l.join(",") } try { return H.apply(n, f.querySelectorAll(c)), n } catch (e) { N(t, !0) } finally { s === S && e.removeAttribute("id") } } } return g(t.replace(B, "$1"), e, n, r) } function ue() { var r = []; return function e(t, n) { return r.push(t + " ") > b.cacheLength && delete e[r.shift()], e[t + " "] = n } } function le(e) { return e[S] = !0, e } function ce(e) { var t = C.createElement("fieldset"); try { return !!e(t) } catch (e) { return !1 } finally { t.parentNode && t.parentNode.removeChild(t), t = null } } function fe(e, t) { var n = e.split("|"), r = n.length; while (r--) b.attrHandle[n[r]] = t } function pe(e, t) { var n = t && e, r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex; if (r) return r; if (n) while (n = n.nextSibling) if (n === t) return -1; return e ? 1 : -1 } function de(t) { return function (e) { return "input" === e.nodeName.toLowerCase() && e.type === t } } function he(n) { return function (e) { var t = e.nodeName.toLowerCase(); return ("input" === t || "button" === t) && e.type === n } } function ge(t) { return function (e) { return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && ae(e) === t : e.disabled === t : "label" in e && e.disabled === t } } function ye(a) { return le(function (o) { return o = +o, le(function (e, t) { var n, r = a([], e.length, o), i = r.length; while (i--) e[n = r[i]] && (e[n] = !(t[n] = e[n])) }) }) } function ve(e) { return e && "undefined" != typeof e.getElementsByTagName && e } for (e in d = se.support = {}, i = se.isXML = function (e) { var t = e && e.namespaceURI, n = e && (e.ownerDocument || e).documentElement; return !Y.test(t || n && n.nodeName || "HTML") }, T = se.setDocument = function (e) { var t, n, r = e ? e.ownerDocument || e : p; return r != C && 9 === r.nodeType && r.documentElement && (a = (C = r).documentElement, E = !i(C), p != C && (n = C.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), d.scope = ce(function (e) { return a.appendChild(e).appendChild(C.createElement("div")), "undefined" != typeof e.querySelectorAll && !e.querySelectorAll(":scope fieldset div").length }), d.attributes = ce(function (e) { return e.className = "i", !e.getAttribute("className") }), d.getElementsByTagName = ce(function (e) { return e.appendChild(C.createComment("")), !e.getElementsByTagName("*").length }), d.getElementsByClassName = K.test(C.getElementsByClassName), d.getById = ce(function (e) { return a.appendChild(e).id = S, !C.getElementsByName || !C.getElementsByName(S).length }), d.getById ? (b.filter.ID = function (e) { var t = e.replace(te, ne); return function (e) { return e.getAttribute("id") === t } }, b.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && E) { var n = t.getElementById(e); return n ? [n] : [] } }) : (b.filter.ID = function (e) { var n = e.replace(te, ne); return function (e) { var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id"); return t && t.value === n } }, b.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && E) { var n, r, i, o = t.getElementById(e); if (o) { if ((n = o.getAttributeNode("id")) && n.value === e) return [o]; i = t.getElementsByName(e), r = 0; while (o = i[r++]) if ((n = o.getAttributeNode("id")) && n.value === e) return [o] } return [] } }), b.find.TAG = d.getElementsByTagName ? function (e, t) { return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : d.qsa ? t.querySelectorAll(e) : void 0 } : function (e, t) { var n, r = [], i = 0, o = t.getElementsByTagName(e); if ("*" === e) { while (n = o[i++]) 1 === n.nodeType && r.push(n); return r } return o }, b.find.CLASS = d.getElementsByClassName && function (e, t) { if ("undefined" != typeof t.getElementsByClassName && E) return t.getElementsByClassName(e) }, s = [], y = [], (d.qsa = K.test(C.querySelectorAll)) && (ce(function (e) { var t; a.appendChild(e).innerHTML = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && y.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || y.push("\\[" + M + "*(?:value|" + R + ")"), e.querySelectorAll("[id~=" + S + "-]").length || y.push("~="), (t = C.createElement("input")).setAttribute("name", ""), e.appendChild(t), e.querySelectorAll("[name='']").length || y.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"), e.querySelectorAll(":checked").length || y.push(":checked"), e.querySelectorAll("a#" + S + "+*").length || y.push(".#.+[+~]"), e.querySelectorAll("\\\f"), y.push("[\\r\\n\\f]") }), ce(function (e) { e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>"; var t = C.createElement("input"); t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && y.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && y.push(":enabled", ":disabled"), a.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && y.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), y.push(",.*:") })), (d.matchesSelector = K.test(c = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ce(function (e) { d.disconnectedMatch = c.call(e, "*"), c.call(e, "[s!='']:x"), s.push("!=", F) }), y = y.length && new RegExp(y.join("|")), s = s.length && new RegExp(s.join("|")), t = K.test(a.compareDocumentPosition), v = t || K.test(a.contains) ? function (e, t) { var n = 9 === e.nodeType ? e.documentElement : e, r = t && t.parentNode; return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r))) } : function (e, t) { if (t) while (t = t.parentNode) if (t === e) return !0; return !1 }, j = t ? function (e, t) { if (e === t) return l = !0, 0; var n = !e.compareDocumentPosition - !t.compareDocumentPosition; return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !d.sortDetached && t.compareDocumentPosition(e) === n ? e == C || e.ownerDocument == p && v(p, e) ? -1 : t == C || t.ownerDocument == p && v(p, t) ? 1 : u ? P(u, e) - P(u, t) : 0 : 4 & n ? -1 : 1) } : function (e, t) { if (e === t) return l = !0, 0; var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], s = [t]; if (!i || !o) return e == C ? -1 : t == C ? 1 : i ? -1 : o ? 1 : u ? P(u, e) - P(u, t) : 0; if (i === o) return pe(e, t); n = e; while (n = n.parentNode) a.unshift(n); n = t; while (n = n.parentNode) s.unshift(n); while (a[r] === s[r]) r++; return r ? pe(a[r], s[r]) : a[r] == p ? -1 : s[r] == p ? 1 : 0 }), C }, se.matches = function (e, t) { return se(e, null, null, t) }, se.matchesSelector = function (e, t) { if (T(e), d.matchesSelector && E && !N[t + " "] && (!s || !s.test(t)) && (!y || !y.test(t))) try { var n = c.call(e, t); if (n || d.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n } catch (e) { N(t, !0) } return 0 < se(t, C, null, [e]).length }, se.contains = function (e, t) { return (e.ownerDocument || e) != C && T(e), v(e, t) }, se.attr = function (e, t) { (e.ownerDocument || e) != C && T(e); var n = b.attrHandle[t.toLowerCase()], r = n && D.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0; return void 0 !== r ? r : d.attributes || !E ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }, se.escape = function (e) { return (e + "").replace(re, ie) }, se.error = function (e) { throw new Error("Syntax error, unrecognized expression: " + e) }, se.uniqueSort = function (e) { var t, n = [], r = 0, i = 0; if (l = !d.detectDuplicates, u = !d.sortStable && e.slice(0), e.sort(j), l) { while (t = e[i++]) t === e[i] && (r = n.push(i)); while (r--) e.splice(n[r], 1) } return u = null, e }, o = se.getText = function (e) { var t, n = "", r = 0, i = e.nodeType; if (i) { if (1 === i || 9 === i || 11 === i) { if ("string" == typeof e.textContent) return e.textContent; for (e = e.firstChild; e; e = e.nextSibling)n += o(e) } else if (3 === i || 4 === i) return e.nodeValue } else while (t = e[r++]) n += o(t); return n }, (b = se.selectors = { cacheLength: 50, createPseudo: le, match: G, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function (e) { return e[1] = e[1].replace(te, ne), e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4) }, CHILD: function (e) { return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || se.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && se.error(e[0]), e }, PSEUDO: function (e) { var t, n = !e[6] && e[2]; return G.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = h(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3)) } }, filter: { TAG: function (e) { var t = e.replace(te, ne).toLowerCase(); return "*" === e ? function () { return !0 } : function (e) { return e.nodeName && e.nodeName.toLowerCase() === t } }, CLASS: function (e) { var t = m[e + " "]; return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && m(e, function (e) { return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "") }) }, ATTR: function (n, r, i) { return function (e) { var t = se.attr(e, n); return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace($, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-")) } }, CHILD: function (h, e, t, g, y) { var v = "nth" !== h.slice(0, 3), m = "last" !== h.slice(-4), x = "of-type" === e; return 1 === g && 0 === y ? function (e) { return !!e.parentNode } : function (e, t, n) { var r, i, o, a, s, u, l = v !== m ? "nextSibling" : "previousSibling", c = e.parentNode, f = x && e.nodeName.toLowerCase(), p = !n && !x, d = !1; if (c) { if (v) { while (l) { a = e; while (a = a[l]) if (x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) return !1; u = l = "only" === h && !u && "nextSibling" } return !0 } if (u = [m ? c.firstChild : c.lastChild], m && p) { d = (s = (r = (i = (o = (a = c)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]) && r[2], a = s && c.childNodes[s]; while (a = ++s && a && a[l] || (d = s = 0) || u.pop()) if (1 === a.nodeType && ++d && a === e) { i[h] = [k, s, d]; break } } else if (p && (d = s = (r = (i = (o = (a = e)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]), !1 === d) while (a = ++s && a && a[l] || (d = s = 0) || u.pop()) if ((x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) && ++d && (p && ((i = (o = a[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] = [k, d]), a === e)) break; return (d -= y) === g || d % g == 0 && 0 <= d / g } } }, PSEUDO: function (e, o) { var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e); return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], b.setFilters.hasOwnProperty(e.toLowerCase()) ? le(function (e, t) { var n, r = a(e, o), i = r.length; while (i--) e[n = P(e, r[i])] = !(t[n] = r[i]) }) : function (e) { return a(e, 0, t) }) : a } }, pseudos: { not: le(function (e) { var r = [], i = [], s = f(e.replace(B, "$1")); return s[S] ? le(function (e, t, n, r) { var i, o = s(e, null, r, []), a = e.length; while (a--) (i = o[a]) && (e[a] = !(t[a] = i)) }) : function (e, t, n) { return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop() } }), has: le(function (t) { return function (e) { return 0 < se(t, e).length } }), contains: le(function (t) { return t = t.replace(te, ne), function (e) { return -1 < (e.textContent || o(e)).indexOf(t) } }), lang: le(function (n) { return V.test(n || "") || se.error("unsupported lang: " + n), n = n.replace(te, ne).toLowerCase(), function (e) { var t; do { if (t = E ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") } while ((e = e.parentNode) && 1 === e.nodeType); return !1 } }), target: function (e) { var t = n.location && n.location.hash; return t && t.slice(1) === e.id }, root: function (e) { return e === a }, focus: function (e) { return e === C.activeElement && (!C.hasFocus || C.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) }, enabled: ge(!1), disabled: ge(!0), checked: function (e) { var t = e.nodeName.toLowerCase(); return "input" === t && !!e.checked || "option" === t && !!e.selected }, selected: function (e) { return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected }, empty: function (e) { for (e = e.firstChild; e; e = e.nextSibling)if (e.nodeType < 6) return !1; return !0 }, parent: function (e) { return !b.pseudos.empty(e) }, header: function (e) { return J.test(e.nodeName) }, input: function (e) { return Q.test(e.nodeName) }, button: function (e) { var t = e.nodeName.toLowerCase(); return "input" === t && "button" === e.type || "button" === t }, text: function (e) { var t; return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) }, first: ye(function () { return [0] }), last: ye(function (e, t) { return [t - 1] }), eq: ye(function (e, t, n) { return [n < 0 ? n + t : n] }), even: ye(function (e, t) { for (var n = 0; n < t; n += 2)e.push(n); return e }), odd: ye(function (e, t) { for (var n = 1; n < t; n += 2)e.push(n); return e }), lt: ye(function (e, t, n) { for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;)e.push(r); return e }), gt: ye(function (e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;)e.push(r); return e }) } }).pseudos.nth = b.pseudos.eq, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) b.pseudos[e] = de(e); for (e in { submit: !0, reset: !0 }) b.pseudos[e] = he(e); function me() { } function xe(e) { for (var t = 0, n = e.length, r = ""; t < n; t++)r += e[t].value; return r } function be(s, e, t) { var u = e.dir, l = e.next, c = l || u, f = t && "parentNode" === c, p = r++; return e.first ? function (e, t, n) { while (e = e[u]) if (1 === e.nodeType || f) return s(e, t, n); return !1 } : function (e, t, n) { var r, i, o, a = [k, p]; if (n) { while (e = e[u]) if ((1 === e.nodeType || f) && s(e, t, n)) return !0 } else while (e = e[u]) if (1 === e.nodeType || f) if (i = (o = e[S] || (e[S] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), l && l === e.nodeName.toLowerCase()) e = e[u] || e; else { if ((r = i[c]) && r[0] === k && r[1] === p) return a[2] = r[2]; if ((i[c] = a)[2] = s(e, t, n)) return !0 } return !1 } } function we(i) { return 1 < i.length ? function (e, t, n) { var r = i.length; while (r--) if (!i[r](e, t, n)) return !1; return !0 } : i[0] } function Te(e, t, n, r, i) { for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s))); return a } function Ce(d, h, g, y, v, e) { return y && !y[S] && (y = Ce(y)), v && !v[S] && (v = Ce(v, e)), le(function (e, t, n, r) { var i, o, a, s = [], u = [], l = t.length, c = e || function (e, t, n) { for (var r = 0, i = t.length; r < i; r++)se(e, t[r], n); return n }(h || "*", n.nodeType ? [n] : n, []), f = !d || !e && h ? c : Te(c, s, d, n, r), p = g ? v || (e ? d : l || y) ? [] : t : f; if (g && g(f, p, n, r), y) { i = Te(p, u), y(i, [], n, r), o = i.length; while (o--) (a = i[o]) && (p[u[o]] = !(f[u[o]] = a)) } if (e) { if (v || d) { if (v) { i = [], o = p.length; while (o--) (a = p[o]) && i.push(f[o] = a); v(null, p = [], i, r) } o = p.length; while (o--) (a = p[o]) && -1 < (i = v ? P(e, a) : s[o]) && (e[i] = !(t[i] = a)) } } else p = Te(p === t ? p.splice(l, p.length) : p), v ? v(null, t, p, r) : H.apply(t, p) }) } function Ee(e) { for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = be(function (e) { return e === i }, a, !0), l = be(function (e) { return -1 < P(i, e) }, a, !0), c = [function (e, t, n) { var r = !o && (n || t !== w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); return i = null, r }]; s < r; s++)if (t = b.relative[e[s].type]) c = [be(we(c), t)]; else { if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) { for (n = ++s; n < r; n++)if (b.relative[e[n].type]) break; return Ce(1 < s && we(c), 1 < s && xe(e.slice(0, s - 1).concat({ value: " " === e[s - 2].type ? "*" : "" })).replace(B, "$1"), t, s < n && Ee(e.slice(s, n)), n < r && Ee(e = e.slice(n)), n < r && xe(e)) } c.push(t) } return we(c) } return me.prototype = b.filters = b.pseudos, b.setFilters = new me, h = se.tokenize = function (e, t) { var n, r, i, o, a, s, u, l = x[e + " "]; if (l) return t ? 0 : l.slice(0); a = e, s = [], u = b.preFilter; while (a) { for (o in n && !(r = _.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = z.exec(a)) && (n = r.shift(), i.push({ value: n, type: r[0].replace(B, " ") }), a = a.slice(n.length)), b.filter) !(r = G[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), i.push({ value: n, type: o, matches: r }), a = a.slice(n.length)); if (!n) break } return t ? a.length : a ? se.error(e) : x(e, s).slice(0) }, f = se.compile = function (e, t) { var n, y, v, m, x, r, i = [], o = [], a = A[e + " "]; if (!a) { t || (t = h(e)), n = t.length; while (n--) (a = Ee(t[n]))[S] ? i.push(a) : o.push(a); (a = A(e, (y = o, m = 0 < (v = i).length, x = 0 < y.length, r = function (e, t, n, r, i) { var o, a, s, u = 0, l = "0", c = e && [], f = [], p = w, d = e || x && b.find.TAG("*", i), h = k += null == p ? 1 : Math.random() || .1, g = d.length; for (i && (w = t == C || t || i); l !== g && null != (o = d[l]); l++) { if (x && o) { a = 0, t || o.ownerDocument == C || (T(o), n = !E); while (s = y[a++]) if (s(o, t || C, n)) { r.push(o); break } i && (k = h) } m && ((o = !s && o) && u--, e && c.push(o)) } if (u += l, m && l !== u) { a = 0; while (s = v[a++]) s(c, f, t, n); if (e) { if (0 < u) while (l--) c[l] || f[l] || (f[l] = q.call(r)); f = Te(f) } H.apply(r, f), i && !e && 0 < f.length && 1 < u + v.length && se.uniqueSort(r) } return i && (k = h, w = p), c }, m ? le(r) : r))).selector = e } return a }, g = se.select = function (e, t, n, r) { var i, o, a, s, u, l = "function" == typeof e && e, c = !r && h(e = l.selector || e); if (n = n || [], 1 === c.length) { if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && E && b.relative[o[1].type]) { if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n; l && (t = t.parentNode), e = e.slice(o.shift().value.length) } i = G.needsContext.test(e) ? 0 : o.length; while (i--) { if (a = o[i], b.relative[s = a.type]) break; if ((u = b.find[s]) && (r = u(a.matches[0].replace(te, ne), ee.test(o[0].type) && ve(t.parentNode) || t))) { if (o.splice(i, 1), !(e = r.length && xe(o))) return H.apply(n, r), n; break } } } return (l || f(e, c))(r, t, !E, n, !t || ee.test(e) && ve(t.parentNode) || t), n }, d.sortStable = S.split("").sort(j).join("") === S, d.detectDuplicates = !!l, T(), d.sortDetached = ce(function (e) { return 1 & e.compareDocumentPosition(C.createElement("fieldset")) }), ce(function (e) { return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href") }) || fe("type|href|height|width", function (e, t, n) { if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2) }), d.attributes && ce(function (e) { return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value") }) || fe("value", function (e, t, n) { if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue }), ce(function (e) { return null == e.getAttribute("disabled") }) || fe(R, function (e, t, n) { var r; if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }), se }(C); S.find = d, S.expr = d.selectors, S.expr[":"] = S.expr.pseudos, S.uniqueSort = S.unique = d.uniqueSort, S.text = d.getText, S.isXMLDoc = d.isXML, S.contains = d.contains, S.escapeSelector = d.escape; var h = function (e, t, n) { var r = [], i = void 0 !== n; while ((e = e[t]) && 9 !== e.nodeType) if (1 === e.nodeType) { if (i && S(e).is(n)) break; r.push(e) } return r }, T = function (e, t) { for (var n = []; e; e = e.nextSibling)1 === e.nodeType && e !== t && n.push(e); return n }, k = S.expr.match.needsContext; function A(e, t) { return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() } var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; function j(e, n, r) { return m(n) ? S.grep(e, function (e, t) { return !!n.call(e, t, e) !== r }) : n.nodeType ? S.grep(e, function (e) { return e === n !== r }) : "string" != typeof n ? S.grep(e, function (e) { return -1 < i.call(n, e) !== r }) : S.filter(n, e, r) } S.filter = function (e, t, n) { var r = t[0]; return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? S.find.matchesSelector(r, e) ? [r] : [] : S.find.matches(e, S.grep(t, function (e) { return 1 === e.nodeType })) }, S.fn.extend({ find: function (e) { var t, n, r = this.length, i = this; if ("string" != typeof e) return this.pushStack(S(e).filter(function () { for (t = 0; t < r; t++)if (S.contains(i[t], this)) return !0 })); for (n = this.pushStack([]), t = 0; t < r; t++)S.find(e, i[t], n); return 1 < r ? S.uniqueSort(n) : n }, filter: function (e) { return this.pushStack(j(this, e || [], !1)) }, not: function (e) { return this.pushStack(j(this, e || [], !0)) }, is: function (e) { return !!j(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1).length } }); var D, q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; (S.fn.init = function (e, t, n) { var r, i; if (!e) return this; if (n = n || D, "string" == typeof e) { if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : q.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); if (r[1]) { if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0)), N.test(r[1]) && S.isPlainObject(t)) for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); return this } return (i = E.getElementById(r[2])) && (this[0] = i, this.length = 1), this } return e.nodeType ? (this[0] = e, this.length = 1, this) : m(e) ? void 0 !== n.ready ? n.ready(e) : e(S) : S.makeArray(e, this) }).prototype = S.fn, D = S(E); var L = /^(?:parents|prev(?:Until|All))/, H = { children: !0, contents: !0, next: !0, prev: !0 }; function O(e, t) { while ((e = e[t]) && 1 !== e.nodeType); return e } S.fn.extend({ has: function (e) { var t = S(e, this), n = t.length; return this.filter(function () { for (var e = 0; e < n; e++)if (S.contains(this, t[e])) return !0 }) }, closest: function (e, t) { var n, r = 0, i = this.length, o = [], a = "string" != typeof e && S(e); if (!k.test(e)) for (; r < i; r++)for (n = this[r]; n && n !== t; n = n.parentNode)if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && S.find.matchesSelector(n, e))) { o.push(n); break } return this.pushStack(1 < o.length ? S.uniqueSort(o) : o) }, index: function (e) { return e ? "string" == typeof e ? i.call(S(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 }, add: function (e, t) { return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t)))) }, addBack: function (e) { return this.add(null == e ? this.prevObject : this.prevObject.filter(e)) } }), S.each({ parent: function (e) { var t = e.parentNode; return t && 11 !== t.nodeType ? t : null }, parents: function (e) { return h(e, "parentNode") }, parentsUntil: function (e, t, n) { return h(e, "parentNode", n) }, next: function (e) { return O(e, "nextSibling") }, prev: function (e) { return O(e, "previousSibling") }, nextAll: function (e) { return h(e, "nextSibling") }, prevAll: function (e) { return h(e, "previousSibling") }, nextUntil: function (e, t, n) { return h(e, "nextSibling", n) }, prevUntil: function (e, t, n) { return h(e, "previousSibling", n) }, siblings: function (e) { return T((e.parentNode || {}).firstChild, e) }, children: function (e) { return T(e.firstChild) }, contents: function (e) { return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (A(e, "template") && (e = e.content || e), S.merge([], e.childNodes)) } }, function (r, i) { S.fn[r] = function (e, t) { var n = S.map(this, i, e); return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = S.filter(t, n)), 1 < this.length && (H[r] || S.uniqueSort(n), L.test(r) && n.reverse()), this.pushStack(n) } }); var P = /[^\x20\t\r\n\f]+/g; function R(e) { return e } function M(e) { throw e } function I(e, t, n, r) { var i; try { e && m(i = e.promise) ? i.call(e).done(t).fail(n) : e && m(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r)) } catch (e) { n.apply(void 0, [e]) } } S.Callbacks = function (r) { var e, n; r = "string" == typeof r ? (e = r, n = {}, S.each(e.match(P) || [], function (e, t) { n[t] = !0 }), n) : S.extend({}, r); var i, t, o, a, s = [], u = [], l = -1, c = function () { for (a = a || r.once, o = i = !0; u.length; l = -1) { t = u.shift(); while (++l < s.length) !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, t = !1) } r.memory || (t = !1), i = !1, a && (s = t ? [] : "") }, f = { add: function () { return s && (t && !i && (l = s.length - 1, u.push(t)), function n(e) { S.each(e, function (e, t) { m(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== w(t) && n(t) }) }(arguments), t && !i && c()), this }, remove: function () { return S.each(arguments, function (e, t) { var n; while (-1 < (n = S.inArray(t, s, n))) s.splice(n, 1), n <= l && l-- }), this }, has: function (e) { return e ? -1 < S.inArray(e, s) : 0 < s.length }, empty: function () { return s && (s = []), this }, disable: function () { return a = u = [], s = t = "", this }, disabled: function () { return !s }, lock: function () { return a = u = [], t || i || (s = t = ""), this }, locked: function () { return !!a }, fireWith: function (e, t) { return a || (t = [e, (t = t || []).slice ? t.slice() : t], u.push(t), i || c()), this }, fire: function () { return f.fireWith(this, arguments), this }, fired: function () { return !!o } }; return f }, S.extend({ Deferred: function (e) { var o = [["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2], ["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]], i = "pending", a = { state: function () { return i }, always: function () { return s.done(arguments).fail(arguments), this }, "catch": function (e) { return a.then(null, e) }, pipe: function () { var i = arguments; return S.Deferred(function (r) { S.each(o, function (e, t) { var n = m(i[t[4]]) && i[t[4]]; s[t[1]](function () { var e = n && n.apply(this, arguments); e && m(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments) }) }), i = null }).promise() }, then: function (t, n, r) { var u = 0; function l(i, o, a, s) { return function () { var n = this, r = arguments, e = function () { var e, t; if (!(i < u)) { if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution"); t = e && ("object" == typeof e || "function" == typeof e) && e.then, m(t) ? s ? t.call(e, l(u, o, R, s), l(u, o, M, s)) : (u++, t.call(e, l(u, o, R, s), l(u, o, M, s), l(u, o, R, o.notifyWith))) : (a !== R && (n = void 0, r = [e]), (s || o.resolveWith)(n, r)) } }, t = s ? e : function () { try { e() } catch (e) { S.Deferred.exceptionHook && S.Deferred.exceptionHook(e, t.stackTrace), u <= i + 1 && (a !== M && (n = void 0, r = [e]), o.rejectWith(n, r)) } }; i ? t() : (S.Deferred.getStackHook && (t.stackTrace = S.Deferred.getStackHook()), C.setTimeout(t)) } } return S.Deferred(function (e) { o[0][3].add(l(0, e, m(r) ? r : R, e.notifyWith)), o[1][3].add(l(0, e, m(t) ? t : R)), o[2][3].add(l(0, e, m(n) ? n : M)) }).promise() }, promise: function (e) { return null != e ? S.extend(e, a) : a } }, s = {}; return S.each(o, function (e, t) { var n = t[2], r = t[5]; a[t[1]] = n.add, r && n.add(function () { i = r }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), n.add(t[3].fire), s[t[0]] = function () { return s[t[0] + "With"](this === s ? void 0 : this, arguments), this }, s[t[0] + "With"] = n.fireWith }), a.promise(s), e && e.call(s, s), s }, when: function (e) { var n = arguments.length, t = n, r = Array(t), i = s.call(arguments), o = S.Deferred(), a = function (t) { return function (e) { r[t] = this, i[t] = 1 < arguments.length ? s.call(arguments) : e, --n || o.resolveWith(r, i) } }; if (n <= 1 && (I(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || m(i[t] && i[t].then))) return o.then(); while (t--) I(i[t], a(t), o.reject); return o.promise() } }); var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; S.Deferred.exceptionHook = function (e, t) { C.console && C.console.warn && e && W.test(e.name) && C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t) }, S.readyException = function (e) { C.setTimeout(function () { throw e }) }; var F = S.Deferred(); function $() { E.removeEventListener("DOMContentLoaded", $), C.removeEventListener("load", $), S.ready() } S.fn.ready = function (e) { return F.then(e)["catch"](function (e) { S.readyException(e) }), this }, S.extend({ isReady: !1, readyWait: 1, ready: function (e) { (!0 === e ? --S.readyWait : S.isReady) || (S.isReady = !0) !== e && 0 < --S.readyWait || F.resolveWith(E, [S]) } }), S.ready.then = F.then, "complete" === E.readyState || "loading" !== E.readyState && !E.documentElement.doScroll ? C.setTimeout(S.ready) : (E.addEventListener("DOMContentLoaded", $), C.addEventListener("load", $)); var B = function (e, t, n, r, i, o, a) { var s = 0, u = e.length, l = null == n; if ("object" === w(n)) for (s in i = !0, n) B(e, t, s, n[s], !0, o, a); else if (void 0 !== r && (i = !0, m(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function (e, t, n) { return l.call(S(e), n) })), t)) for (; s < u; s++)t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); return i ? e : l ? t.call(e) : u ? t(e[0], n) : o }, _ = /^-ms-/, z = /-([a-z])/g; function U(e, t) { return t.toUpperCase() } function X(e) { return e.replace(_, "ms-").replace(z, U) } var V = function (e) { return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType }; function G() { this.expando = S.expando + G.uid++ } G.uid = 1, G.prototype = { cache: function (e) { var t = e[this.expando]; return t || (t = {}, V(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, { value: t, configurable: !0 }))), t }, set: function (e, t, n) { var r, i = this.cache(e); if ("string" == typeof t) i[X(t)] = n; else for (r in t) i[X(r)] = t[r]; return i }, get: function (e, t) { return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][X(t)] }, access: function (e, t, n) { return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t) }, remove: function (e, t) { var n, r = e[this.expando]; if (void 0 !== r) { if (void 0 !== t) { n = (t = Array.isArray(t) ? t.map(X) : (t = X(t)) in r ? [t] : t.match(P) || []).length; while (n--) delete r[t[n]] } (void 0 === t || S.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando]) } }, hasData: function (e) { var t = e[this.expando]; return void 0 !== t && !S.isEmptyObject(t) } }; var Y = new G, Q = new G, J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, K = /[A-Z]/g; function Z(e, t, n) { var r, i; if (void 0 === n && 1 === e.nodeType) if (r = "data-" + t.replace(K, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(r))) { try { n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : J.test(i) ? JSON.parse(i) : i) } catch (e) { } Q.set(e, t, n) } else n = void 0; return n } S.extend({ hasData: function (e) { return Q.hasData(e) || Y.hasData(e) }, data: function (e, t, n) { return Q.access(e, t, n) }, removeData: function (e, t) { Q.remove(e, t) }, _data: function (e, t, n) { return Y.access(e, t, n) }, _removeData: function (e, t) { Y.remove(e, t) } }), S.fn.extend({ data: function (n, e) { var t, r, i, o = this[0], a = o && o.attributes; if (void 0 === n) { if (this.length && (i = Q.get(o), 1 === o.nodeType && !Y.get(o, "hasDataAttrs"))) { t = a.length; while (t--) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = X(r.slice(5)), Z(o, r, i[r])); Y.set(o, "hasDataAttrs", !0) } return i } return "object" == typeof n ? this.each(function () { Q.set(this, n) }) : B(this, function (e) { var t; if (o && void 0 === e) return void 0 !== (t = Q.get(o, n)) ? t : void 0 !== (t = Z(o, n)) ? t : void 0; this.each(function () { Q.set(this, n, e) }) }, null, e, 1 < arguments.length, null, !0) }, removeData: function (e) { return this.each(function () { Q.remove(this, e) }) } }), S.extend({ queue: function (e, t, n) { var r; if (e) return t = (t || "fx") + "queue", r = Y.get(e, t), n && (!r || Array.isArray(n) ? r = Y.access(e, t, S.makeArray(n)) : r.push(n)), r || [] }, dequeue: function (e, t) { t = t || "fx"; var n = S.queue(e, t), r = n.length, i = n.shift(), o = S._queueHooks(e, t); "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function () { S.dequeue(e, t) }, o)), !r && o && o.empty.fire() }, _queueHooks: function (e, t) { var n = t + "queueHooks"; return Y.get(e, n) || Y.access(e, n, { empty: S.Callbacks("once memory").add(function () { Y.remove(e, [t + "queue", n]) }) }) } }), S.fn.extend({ queue: function (t, n) { var e = 2; return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? S.queue(this[0], t) : void 0 === n ? this : this.each(function () { var e = S.queue(this, t, n); S._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t) }) }, dequeue: function (e) { return this.each(function () { S.dequeue(this, e) }) }, clearQueue: function (e) { return this.queue(e || "fx", []) }, promise: function (e, t) { var n, r = 1, i = S.Deferred(), o = this, a = this.length, s = function () { --r || i.resolveWith(o, [o]) }; "string" != typeof e && (t = e, e = void 0), e = e || "fx"; while (a--) (n = Y.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s)); return s(), i.promise(t) } }); var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"), ne = ["Top", "Right", "Bottom", "Left"], re = E.documentElement, ie = function (e) { return S.contains(e.ownerDocument, e) }, oe = { composed: !0 }; re.getRootNode && (ie = function (e) { return S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument }); var ae = function (e, t) { return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === S.css(e, "display") }; function se(e, t, n, r) { var i, o, a = 20, s = r ? function () { return r.cur() } : function () { return S.css(e, t, "") }, u = s(), l = n && n[3] || (S.cssNumber[t] ? "" : "px"), c = e.nodeType && (S.cssNumber[t] || "px" !== l && +u) && te.exec(S.css(e, t)); if (c && c[3] !== l) { u /= 2, l = l || c[3], c = +u || 1; while (a--) S.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o; c *= 2, S.style(e, t, c + l), n = n || [] } return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i } var ue = {}; function le(e, t) { for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)(r = e[c]).style && (n = r.style.display, t ? ("none" === n && (l[c] = Y.get(r, "display") || null, l[c] || (r.style.display = "")), "" === r.style.display && ae(r) && (l[c] = (u = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (u = ue[s]) || (o = a.body.appendChild(a.createElement(s)), u = S.css(o, "display"), o.parentNode.removeChild(o), "none" === u && (u = "block"), ue[s] = u)))) : "none" !== n && (l[c] = "none", Y.set(r, "display", n))); for (c = 0; c < f; c++)null != l[c] && (e[c].style.display = l[c]); return e } S.fn.extend({ show: function () { return le(this, !0) }, hide: function () { return le(this) }, toggle: function (e) { return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function () { ae(this) ? S(this).show() : S(this).hide() }) } }); var ce, fe, pe = /^(?:checkbox|radio)$/i, de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, he = /^$|^module$|\/(?:java|ecma)script/i; ce = E.createDocumentFragment().appendChild(E.createElement("div")), (fe = E.createElement("input")).setAttribute("type", "radio"), fe.setAttribute("checked", "checked"), fe.setAttribute("name", "t"), ce.appendChild(fe), v.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked, ce.innerHTML = "<textarea>x</textarea>", v.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue, ce.innerHTML = "<option></option>", v.option = !!ce.lastChild; var ge = { thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: [0, "", ""] }; function ye(e, t) { var n; return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && A(e, t) ? S.merge([e], n) : n } function ve(e, t) { for (var n = 0, r = e.length; n < r; n++)Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval")) } ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td, v.option || (ge.optgroup = ge.option = [1, "<select multiple='multiple'>", "</select>"]); var me = /<|&#?\w+;/; function xe(e, t, n, r, i) { for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)if ((o = e[d]) || 0 === o) if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o); else if (me.test(o)) { a = a || f.appendChild(t.createElement("div")), s = (de.exec(o) || ["", ""])[1].toLowerCase(), u = ge[s] || ge._default, a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2], c = u[0]; while (c--) a = a.lastChild; S.merge(p, a.childNodes), (a = f.firstChild).textContent = "" } else p.push(t.createTextNode(o)); f.textContent = "", d = 0; while (o = p[d++]) if (r && -1 < S.inArray(o, r)) i && i.push(o); else if (l = ie(o), a = ye(f.appendChild(o), "script"), l && ve(a), n) { c = 0; while (o = a[c++]) he.test(o.type || "") && n.push(o) } return f } var be = /^([^.]*)(?:\.(.+)|)/; function we() { return !0 } function Te() { return !1 } function Ce(e, t) { return e === function () { try { return E.activeElement } catch (e) { } }() == ("focus" === t) } function Ee(e, t, n, r, i, o) { var a, s; if ("object" == typeof t) { for (s in "string" != typeof n && (r = r || n, n = void 0), t) Ee(e, s, n, r, t[s], o); return e } if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = Te; else if (!i) return e; return 1 === o && (a = i, (i = function (e) { return S().off(e), a.apply(this, arguments) }).guid = a.guid || (a.guid = S.guid++)), e.each(function () { S.event.add(this, t, i, r, n) }) } function Se(e, i, o) { o ? (Y.set(e, i, !1), S.event.add(e, i, { namespace: !1, handler: function (e) { var t, n, r = Y.get(this, i); if (1 & e.isTrigger && this[i]) { if (r.length) (S.event.special[i] || {}).delegateType && e.stopPropagation(); else if (r = s.call(arguments), Y.set(this, i, r), t = o(this, i), this[i](), r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : n = {}, r !== n) return e.stopImmediatePropagation(), e.preventDefault(), n && n.value } else r.length && (Y.set(this, i, { value: S.event.trigger(S.extend(r[0], S.Event.prototype), r.slice(1), this) }), e.stopImmediatePropagation()) } })) : void 0 === Y.get(e, i) && S.event.add(e, i, we) } S.event = { global: {}, add: function (t, e, n, r, i) { var o, a, s, u, l, c, f, p, d, h, g, y = Y.get(t); if (V(t)) { n.handler && (n = (o = n).handler, i = o.selector), i && S.find.matchesSelector(re, i), n.guid || (n.guid = S.guid++), (u = y.events) || (u = y.events = Object.create(null)), (a = y.handle) || (a = y.handle = function (e) { return "undefined" != typeof S && S.event.triggered !== e.type ? S.event.dispatch.apply(t, arguments) : void 0 }), l = (e = (e || "").match(P) || [""]).length; while (l--) d = g = (s = be.exec(e[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = S.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = S.event.special[d] || {}, c = S.extend({ type: d, origType: g, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && S.expr.match.needsContext.test(i), namespace: h.join(".") }, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), f.add && (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), S.event.global[d] = !0) } }, remove: function (e, t, n, r, i) { var o, a, s, u, l, c, f, p, d, h, g, y = Y.hasData(e) && Y.get(e); if (y && (u = y.events)) { l = (t = (t || "").match(P) || [""]).length; while (l--) if (d = g = (s = be.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d) { f = S.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length; while (o--) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c)); a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, y.handle) || S.removeEvent(e, d, y.handle), delete u[d]) } else for (d in u) S.event.remove(e, d + t[l], n, r, !0); S.isEmptyObject(u) && Y.remove(e, "handle events") } }, dispatch: function (e) { var t, n, r, i, o, a, s = new Array(arguments.length), u = S.event.fix(e), l = (Y.get(this, "events") || Object.create(null))[u.type] || [], c = S.event.special[u.type] || {}; for (s[0] = u, t = 1; t < arguments.length; t++)s[t] = arguments[t]; if (u.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, u)) { a = S.event.handlers.call(this, u, l), t = 0; while ((i = a[t++]) && !u.isPropagationStopped()) { u.currentTarget = i.elem, n = 0; while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, u.data = o.data, void 0 !== (r = ((S.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), u.stopPropagation())) } return c.postDispatch && c.postDispatch.call(this, u), u.result } }, handlers: function (e, t) { var n, r, i, o, a, s = [], u = t.delegateCount, l = e.target; if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) for (; l !== this; l = l.parentNode || this)if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { for (o = [], a = {}, n = 0; n < u; n++)void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < S(i, this).index(l) : S.find(i, this, null, [l]).length), a[i] && o.push(r); o.length && s.push({ elem: l, handlers: o }) } return l = this, u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s }, addProp: function (t, e) { Object.defineProperty(S.Event.prototype, t, { enumerable: !0, configurable: !0, get: m(e) ? function () { if (this.originalEvent) return e(this.originalEvent) } : function () { if (this.originalEvent) return this.originalEvent[t] }, set: function (e) { Object.defineProperty(this, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) } }) }, fix: function (e) { return e[S.expando] ? e : new S.Event(e) }, special: { load: { noBubble: !0 }, click: { setup: function (e) { var t = this || e; return pe.test(t.type) && t.click && A(t, "input") && Se(t, "click", we), !1 }, trigger: function (e) { var t = this || e; return pe.test(t.type) && t.click && A(t, "input") && Se(t, "click"), !0 }, _default: function (e) { var t = e.target; return pe.test(t.type) && t.click && A(t, "input") && Y.get(t, "click") || A(t, "a") } }, beforeunload: { postDispatch: function (e) { void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result) } } } }, S.removeEvent = function (e, t, n) { e.removeEventListener && e.removeEventListener(t, n) }, S.Event = function (e, t) { if (!(this instanceof S.Event)) return new S.Event(e, t); e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? we : Te, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && S.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[S.expando] = !0 }, S.Event.prototype = { constructor: S.Event, isDefaultPrevented: Te, isPropagationStopped: Te, isImmediatePropagationStopped: Te, isSimulated: !1, preventDefault: function () { var e = this.originalEvent; this.isDefaultPrevented = we, e && !this.isSimulated && e.preventDefault() }, stopPropagation: function () { var e = this.originalEvent; this.isPropagationStopped = we, e && !this.isSimulated && e.stopPropagation() }, stopImmediatePropagation: function () { var e = this.originalEvent; this.isImmediatePropagationStopped = we, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation() } }, S.each({ altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, "char": !0, code: !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: !0 }, S.event.addProp), S.each({ focus: "focusin", blur: "focusout" }, function (t, e) { S.event.special[t] = { setup: function () { return Se(this, t, Ce), !1 }, trigger: function () { return Se(this, t), !0 }, _default: function (e) { return Y.get(e.target, t) }, delegateType: e } }), S.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function (e, i) { S.event.special[e] = { delegateType: i, bindType: i, handle: function (e) { var t, n = e.relatedTarget, r = e.handleObj; return n && (n === this || S.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t } } }), S.fn.extend({ on: function (e, t, n, r) { return Ee(this, e, t, n, r) }, one: function (e, t, n, r) { return Ee(this, e, t, n, r, 1) }, off: function (e, t, n) { var r, i; if (e && e.preventDefault && e.handleObj) return r = e.handleObj, S(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this; if ("object" == typeof e) { for (i in e) this.off(i, t, e[i]); return this } return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = Te), this.each(function () { S.event.remove(this, e, n, t) }) } }); var ke = /<script|<style|<link/i, Ae = /checked\s*(?:[^=]|=\s*.checked.)/i, Ne = /^\s*<!\[CDATA\[|\]\]>\s*$/g; function je(e, t) { return A(e, "table") && A(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0] || e } function De(e) { return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e } function qe(e) { return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e } function Le(e, t) { var n, r, i, o, a, s; if (1 === t.nodeType) { if (Y.hasData(e) && (s = Y.get(e).events)) for (i in Y.remove(t, "handle events"), s) for (n = 0, r = s[i].length; n < r; n++)S.event.add(t, i, s[i][n]); Q.hasData(e) && (o = Q.access(e), a = S.extend({}, o), Q.set(t, a)) } } function He(n, r, i, o) { r = g(r); var e, t, a, s, u, l, c = 0, f = n.length, p = f - 1, d = r[0], h = m(d); if (h || 1 < f && "string" == typeof d && !v.checkClone && Ae.test(d)) return n.each(function (e) { var t = n.eq(e); h && (r[0] = d.call(this, e, t.html())), He(t, r, i, o) }); if (f && (t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) { for (s = (a = S.map(ye(e, "script"), De)).length; c < f; c++)u = e, c !== p && (u = S.clone(u, !0, !0), s && S.merge(a, ye(u, "script"))), i.call(n[c], u, c); if (s) for (l = a[a.length - 1].ownerDocument, S.map(a, qe), c = 0; c < s; c++)u = a[c], he.test(u.type || "") && !Y.access(u, "globalEval") && S.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? S._evalUrl && !u.noModule && S._evalUrl(u.src, { nonce: u.nonce || u.getAttribute("nonce") }, l) : b(u.textContent.replace(Ne, ""), u, l)) } return n } function Oe(e, t, n) { for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++)n || 1 !== r.nodeType || S.cleanData(ye(r)), r.parentNode && (n && ie(r) && ve(ye(r, "script")), r.parentNode.removeChild(r)); return e } S.extend({ htmlPrefilter: function (e) { return e }, clone: function (e, t, n) { var r, i, o, a, s, u, l, c = e.cloneNode(!0), f = ie(e); if (!(v.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e))) for (a = ye(c), r = 0, i = (o = ye(e)).length; r < i; r++)s = o[r], u = a[r], void 0, "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue); if (t) if (n) for (o = o || ye(e), a = a || ye(c), r = 0, i = o.length; r < i; r++)Le(o[r], a[r]); else Le(e, c); return 0 < (a = ye(c, "script")).length && ve(a, !f && ye(e, "script")), c }, cleanData: function (e) { for (var t, n, r, i = S.event.special, o = 0; void 0 !== (n = e[o]); o++)if (V(n)) { if (t = n[Y.expando]) { if (t.events) for (r in t.events) i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle); n[Y.expando] = void 0 } n[Q.expando] && (n[Q.expando] = void 0) } } }), S.fn.extend({ detach: function (e) { return Oe(this, e, !0) }, remove: function (e) { return Oe(this, e) }, text: function (e) { return B(this, function (e) { return void 0 === e ? S.text(this) : this.empty().each(function () { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e) }) }, null, e, arguments.length) }, append: function () { return He(this, arguments, function (e) { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || je(this, e).appendChild(e) }) }, prepend: function () { return He(this, arguments, function (e) { if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { var t = je(this, e); t.insertBefore(e, t.firstChild) } }) }, before: function () { return He(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this) }) }, after: function () { return He(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this.nextSibling) }) }, empty: function () { for (var e, t = 0; null != (e = this[t]); t++)1 === e.nodeType && (S.cleanData(ye(e, !1)), e.textContent = ""); return this }, clone: function (e, t) { return e = null != e && e, t = null == t ? e : t, this.map(function () { return S.clone(this, e, t) }) }, html: function (e) { return B(this, function (e) { var t = this[0] || {}, n = 0, r = this.length; if (void 0 === e && 1 === t.nodeType) return t.innerHTML; if ("string" == typeof e && !ke.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) { e = S.htmlPrefilter(e); try { for (; n < r; n++)1 === (t = this[n] || {}).nodeType && (S.cleanData(ye(t, !1)), t.innerHTML = e); t = 0 } catch (e) { } } t && this.empty().append(e) }, null, e, arguments.length) }, replaceWith: function () { var n = []; return He(this, arguments, function (e) { var t = this.parentNode; S.inArray(this, n) < 0 && (S.cleanData(ye(this)), t && t.replaceChild(e, this)) }, n) } }), S.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (e, a) { S.fn[e] = function (e) { for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++)t = o === i ? this : this.clone(!0), S(r[o])[a](t), u.apply(n, t.get()); return this.pushStack(n) } }); var Pe = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"), Re = /^--/, Me = function (e) { var t = e.ownerDocument.defaultView; return t && t.opener || (t = C), t.getComputedStyle(e) }, Ie = function (e, t, n) { var r, i, o = {}; for (i in t) o[i] = e.style[i], e.style[i] = t[i]; for (i in r = n.call(e), t) e.style[i] = o[i]; return r }, We = new RegExp(ne.join("|"), "i"), Fe = "[\\x20\\t\\r\\n\\f]", $e = new RegExp("^" + Fe + "+|((?:^|[^\\\\])(?:\\\\.)*)" + Fe + "+$", "g"); function Be(e, t, n) { var r, i, o, a, s = Re.test(t), u = e.style; return (n = n || Me(e)) && (a = n.getPropertyValue(t) || n[t], s && (a = a.replace($e, "$1")), "" !== a || ie(e) || (a = S.style(e, t)), !v.pixelBoxStyles() && Pe.test(a) && We.test(t) && (r = u.width, i = u.minWidth, o = u.maxWidth, u.minWidth = u.maxWidth = u.width = a, a = n.width, u.width = r, u.minWidth = i, u.maxWidth = o)), void 0 !== a ? a + "" : a } function _e(e, t) { return { get: function () { if (!e()) return (this.get = t).apply(this, arguments); delete this.get } } } !function () { function e() { if (l) { u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", re.appendChild(u).appendChild(l); var e = C.getComputedStyle(l); n = "1%" !== e.top, s = 12 === t(e.marginLeft), l.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), l.style.position = "absolute", i = 12 === t(l.offsetWidth / 3), re.removeChild(u), l = null } } function t(e) { return Math.round(parseFloat(e)) } var n, r, i, o, a, s, u = E.createElement("div"), l = E.createElement("div"); l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", v.clearCloneStyle = "content-box" === l.style.backgroundClip, S.extend(v, { boxSizingReliable: function () { return e(), r }, pixelBoxStyles: function () { return e(), o }, pixelPosition: function () { return e(), n }, reliableMarginLeft: function () { return e(), s }, scrollboxSize: function () { return e(), i }, reliableTrDimensions: function () { var e, t, n, r; return null == a && (e = E.createElement("table"), t = E.createElement("tr"), n = E.createElement("div"), e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate", t.style.cssText = "border:1px solid", t.style.height = "1px", n.style.height = "9px", n.style.display = "block", re.appendChild(e).appendChild(t).appendChild(n), r = C.getComputedStyle(t), a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight, re.removeChild(e)), a } })) }(); var ze = ["Webkit", "Moz", "ms"], Ue = E.createElement("div").style, Xe = {}; function Ve(e) { var t = S.cssProps[e] || Xe[e]; return t || (e in Ue ? e : Xe[e] = function (e) { var t = e[0].toUpperCase() + e.slice(1), n = ze.length; while (n--) if ((e = ze[n] + t) in Ue) return e }(e) || e) } var Ge = /^(none|table(?!-c[ea]).+)/, Ye = { position: "absolute", visibility: "hidden", display: "block" }, Qe = { letterSpacing: "0", fontWeight: "400" }; function Je(e, t, n) { var r = te.exec(t); return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t } function Ke(e, t, n, r, i, o) { var a = "width" === t ? 1 : 0, s = 0, u = 0; if (n === (r ? "border" : "content")) return 0; for (; a < 4; a += 2)"margin" === n && (u += S.css(e, n + ne[a], !0, i)), r ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) : (u += S.css(e, "padding" + ne[a], !0, i), "padding" !== n ? u += S.css(e, "border" + ne[a] + "Width", !0, i) : s += S.css(e, "border" + ne[a] + "Width", !0, i)); return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0), u } function Ze(e, t, n) { var r = Me(e), i = (!v.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, r), o = i, a = Be(e, t, r), s = "offset" + t[0].toUpperCase() + t.slice(1); if (Pe.test(a)) { if (!n) return a; a = "auto" } return (!v.boxSizingReliable() && i || !v.reliableTrDimensions() && A(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === S.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === S.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Ke(e, t, n || (i ? "border" : "content"), o, r, a) + "px" } function et(e, t, n, r, i) { return new et.prototype.init(e, t, n, r, i) } S.extend({ cssHooks: { opacity: { get: function (e, t) { if (t) { var n = Be(e, "opacity"); return "" === n ? "1" : n } } } }, cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, gridArea: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnStart: !0, gridRow: !0, gridRowEnd: !0, gridRowStart: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 }, cssProps: {}, style: function (e, t, n, r) { if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { var i, o, a, s = X(t), u = Re.test(t), l = e.style; if (u || (t = Ve(s)), a = S.cssHooks[t] || S.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = se(e, t, i), o = "number"), null != n && n == n && ("number" !== o || u || (n += i && i[3] || (S.cssNumber[s] ? "" : "px")), v.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n)) } }, css: function (e, t, n, r) { var i, o, a, s = X(t); return Re.test(t) || (t = Ve(s)), (a = S.cssHooks[t] || S.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Be(e, t, r)), "normal" === i && t in Qe && (i = Qe[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i } }), S.each(["height", "width"], function (e, u) { S.cssHooks[u] = { get: function (e, t, n) { if (t) return !Ge.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Ze(e, u, n) : Ie(e, Ye, function () { return Ze(e, u, n) }) }, set: function (e, t, n) { var r, i = Me(e), o = !v.scrollboxSize() && "absolute" === i.position, a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i), s = n ? Ke(e, u, n, a, i) : 0; return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - Ke(e, u, "border", !1, i) - .5)), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, t = S.css(e, u)), Je(0, t, s) } } }), S.cssHooks.marginLeft = _e(v.reliableMarginLeft, function (e, t) { if (t) return (parseFloat(Be(e, "marginLeft")) || e.getBoundingClientRect().left - Ie(e, { marginLeft: 0 }, function () { return e.getBoundingClientRect().left })) + "px" }), S.each({ margin: "", padding: "", border: "Width" }, function (i, o) { S.cssHooks[i + o] = { expand: function (e) { for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++)n[i + ne[t] + o] = r[t] || r[t - 2] || r[0]; return n } }, "margin" !== i && (S.cssHooks[i + o].set = Je) }), S.fn.extend({ css: function (e, t) { return B(this, function (e, t, n) { var r, i, o = {}, a = 0; if (Array.isArray(t)) { for (r = Me(e), i = t.length; a < i; a++)o[t[a]] = S.css(e, t[a], !1, r); return o } return void 0 !== n ? S.style(e, t, n) : S.css(e, t) }, e, t, 1 < arguments.length) } }), ((S.Tween = et).prototype = { constructor: et, init: function (e, t, n, r, i, o) { this.elem = e, this.prop = n, this.easing = i || S.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (S.cssNumber[n] ? "" : "px") }, cur: function () { var e = et.propHooks[this.prop]; return e && e.get ? e.get(this) : et.propHooks._default.get(this) }, run: function (e) { var t, n = et.propHooks[this.prop]; return this.options.duration ? this.pos = t = S.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : et.propHooks._default.set(this), this } }).init.prototype = et.prototype, (et.propHooks = { _default: { get: function (e) { var t; return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0 }, set: function (e) { S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !S.cssHooks[e.prop] && null == e.elem.style[Ve(e.prop)] ? e.elem[e.prop] = e.now : S.style(e.elem, e.prop, e.now + e.unit) } } }).scrollTop = et.propHooks.scrollLeft = { set: function (e) { e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) } }, S.easing = { linear: function (e) { return e }, swing: function (e) { return .5 - Math.cos(e * Math.PI) / 2 }, _default: "swing" }, S.fx = et.prototype.init, S.fx.step = {}; var tt, nt, rt, it, ot = /^(?:toggle|show|hide)$/, at = /queueHooks$/; function st() { nt && (!1 === E.hidden && C.requestAnimationFrame ? C.requestAnimationFrame(st) : C.setTimeout(st, S.fx.interval), S.fx.tick()) } function ut() { return C.setTimeout(function () { tt = void 0 }), tt = Date.now() } function lt(e, t) { var n, r = 0, i = { height: e }; for (t = t ? 1 : 0; r < 4; r += 2 - t)i["margin" + (n = ne[r])] = i["padding" + n] = e; return t && (i.opacity = i.width = e), i } function ct(e, t, n) { for (var r, i = (ft.tweeners[t] || []).concat(ft.tweeners["*"]), o = 0, a = i.length; o < a; o++)if (r = i[o].call(n, t, e)) return r } function ft(o, e, t) { var n, a, r = 0, i = ft.prefilters.length, s = S.Deferred().always(function () { delete u.elem }), u = function () { if (a) return !1; for (var e = tt || ut(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++)l.tweens[r].run(n); return s.notifyWith(o, [l, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) }, l = s.promise({ elem: o, props: S.extend({}, e), opts: S.extend(!0, { specialEasing: {}, easing: S.easing._default }, t), originalProperties: e, originalOptions: t, startTime: tt || ut(), duration: t.duration, tweens: [], createTween: function (e, t) { var n = S.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing); return l.tweens.push(n), n }, stop: function (e) { var t = 0, n = e ? l.tweens.length : 0; if (a) return this; for (a = !0; t < n; t++)l.tweens[t].run(1); return e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), this } }), c = l.props; for (!function (e, t) { var n, r, i, o, a; for (n in e) if (i = t[r = X(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = S.cssHooks[r]) && "expand" in a) for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i); else t[r] = i }(c, l.opts.specialEasing); r < i; r++)if (n = ft.prefilters[r].call(l, o, c, l.opts)) return m(n.stop) && (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), n; return S.map(c, ct, l), m(l.opts.start) && l.opts.start.call(o, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), S.fx.timer(S.extend(u, { elem: o, anim: l, queue: l.opts.queue })), l } S.Animation = S.extend(ft, { tweeners: { "*": [function (e, t) { var n = this.createTween(e, t); return se(n.elem, e, te.exec(t), n), n }] }, tweener: function (e, t) { m(e) ? (t = e, e = ["*"]) : e = e.match(P); for (var n, r = 0, i = e.length; r < i; r++)n = e[r], ft.tweeners[n] = ft.tweeners[n] || [], ft.tweeners[n].unshift(t) }, prefilters: [function (e, t, n) { var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t, p = this, d = {}, h = e.style, g = e.nodeType && ae(e), y = Y.get(e, "fxshow"); for (r in n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function () { a.unqueued || s() }), a.unqueued++, p.always(function () { p.always(function () { a.unqueued--, S.queue(e, "fx").length || a.empty.fire() }) })), t) if (i = t[r], ot.test(i)) { if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) { if ("show" !== i || !y || void 0 === y[r]) continue; g = !0 } d[r] = y && y[r] || S.style(e, r) } if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d)) for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = y && y.display) && (l = Y.get(e, "display")), "none" === (c = S.css(e, "display")) && (l ? c = l : (le([e], !0), l = e.style.display || l, c = S.css(e, "display"), le([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === S.css(e, "float") && (u || (p.done(function () { h.display = l }), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function () { h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2] })), u = !1, d) u || (y ? "hidden" in y && (g = y.hidden) : y = Y.access(e, "fxshow", { display: l }), o && (y.hidden = !g), g && le([e], !0), p.done(function () { for (r in g || le([e]), Y.remove(e, "fxshow"), d) S.style(e, r, d[r]) })), u = ct(g ? y[r] : 0, r, p), r in y || (y[r] = u.start, g && (u.end = u.start, u.start = 0)) }], prefilter: function (e, t) { t ? ft.prefilters.unshift(e) : ft.prefilters.push(e) } }), S.speed = function (e, t, n) { var r = e && "object" == typeof e ? S.extend({}, e) : { complete: n || !n && t || m(e) && e, duration: e, easing: n && t || t && !m(t) && t }; return S.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in S.fx.speeds ? r.duration = S.fx.speeds[r.duration] : r.duration = S.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function () { m(r.old) && r.old.call(this), r.queue && S.dequeue(this, r.queue) }, r }, S.fn.extend({ fadeTo: function (e, t, n, r) { return this.filter(ae).css("opacity", 0).show().end().animate({ opacity: t }, e, n, r) }, animate: function (t, e, n, r) { var i = S.isEmptyObject(t), o = S.speed(e, n, r), a = function () { var e = ft(this, S.extend({}, t), o); (i || Y.get(this, "finish")) && e.stop(!0) }; return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) }, stop: function (i, e, o) { var a = function (e) { var t = e.stop; delete e.stop, t(o) }; return "string" != typeof i && (o = e, e = i, i = void 0), e && this.queue(i || "fx", []), this.each(function () { var e = !0, t = null != i && i + "queueHooks", n = S.timers, r = Y.get(this); if (t) r[t] && r[t].stop && a(r[t]); else for (t in r) r[t] && r[t].stop && at.test(t) && a(r[t]); for (t = n.length; t--;)n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1)); !e && o || S.dequeue(this, i) }) }, finish: function (a) { return !1 !== a && (a = a || "fx"), this.each(function () { var e, t = Y.get(this), n = t[a + "queue"], r = t[a + "queueHooks"], i = S.timers, o = n ? n.length : 0; for (t.finish = !0, S.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;)i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1)); for (e = 0; e < o; e++)n[e] && n[e].finish && n[e].finish.call(this); delete t.finish }) } }), S.each(["toggle", "show", "hide"], function (e, r) { var i = S.fn[r]; S.fn[r] = function (e, t, n) { return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(lt(r, !0), e, t, n) } }), S.each({ slideDown: lt("show"), slideUp: lt("hide"), slideToggle: lt("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function (e, r) { S.fn[e] = function (e, t, n) { return this.animate(r, e, t, n) } }), S.timers = [], S.fx.tick = function () { var e, t = 0, n = S.timers; for (tt = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1); n.length || S.fx.stop(), tt = void 0 }, S.fx.timer = function (e) { S.timers.push(e), S.fx.start() }, S.fx.interval = 13, S.fx.start = function () { nt || (nt = !0, st()) }, S.fx.stop = function () { nt = null }, S.fx.speeds = { slow: 600, fast: 200, _default: 400 }, S.fn.delay = function (r, e) { return r = S.fx && S.fx.speeds[r] || r, e = e || "fx", this.queue(e, function (e, t) { var n = C.setTimeout(e, r); t.stop = function () { C.clearTimeout(n) } }) }, rt = E.createElement("input"), it = E.createElement("select").appendChild(E.createElement("option")), rt.type = "checkbox", v.checkOn = "" !== rt.value, v.optSelected = it.selected, (rt = E.createElement("input")).value = "t", rt.type = "radio", v.radioValue = "t" === rt.value; var pt, dt = S.expr.attrHandle; S.fn.extend({ attr: function (e, t) { return B(this, S.attr, e, t, 1 < arguments.length) }, removeAttr: function (e) { return this.each(function () { S.removeAttr(this, e) }) } }), S.extend({ attr: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? S.prop(e, t, n) : (1 === o && S.isXMLDoc(e) || (i = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? pt : void 0)), void 0 !== n ? null === n ? void S.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = S.find.attr(e, t)) ? void 0 : r) }, attrHooks: { type: { set: function (e, t) { if (!v.radioValue && "radio" === t && A(e, "input")) { var n = e.value; return e.setAttribute("type", t), n && (e.value = n), t } } } }, removeAttr: function (e, t) { var n, r = 0, i = t && t.match(P); if (i && 1 === e.nodeType) while (n = i[r++]) e.removeAttribute(n) } }), pt = { set: function (e, t, n) { return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n } }, S.each(S.expr.match.bool.source.match(/\w+/g), function (e, t) { var a = dt[t] || S.find.attr; dt[t] = function (e, t, n) { var r, i, o = t.toLowerCase(); return n || (i = dt[o], dt[o] = r, r = null != a(e, t, n) ? o : null, dt[o] = i), r } }); var ht = /^(?:input|select|textarea|button)$/i, gt = /^(?:a|area)$/i; function yt(e) { return (e.match(P) || []).join(" ") } function vt(e) { return e.getAttribute && e.getAttribute("class") || "" } function mt(e) { return Array.isArray(e) ? e : "string" == typeof e && e.match(P) || [] } S.fn.extend({ prop: function (e, t) { return B(this, S.prop, e, t, 1 < arguments.length) }, removeProp: function (e) { return this.each(function () { delete this[S.propFix[e] || e] }) } }), S.extend({ prop: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return 1 === o && S.isXMLDoc(e) || (t = S.propFix[t] || t, i = S.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t] }, propHooks: { tabIndex: { get: function (e) { var t = S.find.attr(e, "tabindex"); return t ? parseInt(t, 10) : ht.test(e.nodeName) || gt.test(e.nodeName) && e.href ? 0 : -1 } } }, propFix: { "for": "htmlFor", "class": "className" } }), v.optSelected || (S.propHooks.selected = { get: function (e) { var t = e.parentNode; return t && t.parentNode && t.parentNode.selectedIndex, null }, set: function (e) { var t = e.parentNode; t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex) } }), S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () { S.propFix[this.toLowerCase()] = this }), S.fn.extend({ addClass: function (t) { var e, n, r, i, o, a; return m(t) ? this.each(function (e) { S(this).addClass(t.call(this, e, vt(this))) }) : (e = mt(t)).length ? this.each(function () { if (r = vt(this), n = 1 === this.nodeType && " " + yt(r) + " ") { for (o = 0; o < e.length; o++)i = e[o], n.indexOf(" " + i + " ") < 0 && (n += i + " "); a = yt(n), r !== a && this.setAttribute("class", a) } }) : this }, removeClass: function (t) { var e, n, r, i, o, a; return m(t) ? this.each(function (e) { S(this).removeClass(t.call(this, e, vt(this))) }) : arguments.length ? (e = mt(t)).length ? this.each(function () { if (r = vt(this), n = 1 === this.nodeType && " " + yt(r) + " ") { for (o = 0; o < e.length; o++) { i = e[o]; while (-1 < n.indexOf(" " + i + " ")) n = n.replace(" " + i + " ", " ") } a = yt(n), r !== a && this.setAttribute("class", a) } }) : this : this.attr("class", "") }, toggleClass: function (t, n) { var e, r, i, o, a = typeof t, s = "string" === a || Array.isArray(t); return m(t) ? this.each(function (e) { S(this).toggleClass(t.call(this, e, vt(this), n), n) }) : "boolean" == typeof n && s ? n ? this.addClass(t) : this.removeClass(t) : (e = mt(t), this.each(function () { if (s) for (o = S(this), i = 0; i < e.length; i++)r = e[i], o.hasClass(r) ? o.removeClass(r) : o.addClass(r); else void 0 !== t && "boolean" !== a || ((r = vt(this)) && Y.set(this, "__className__", r), this.setAttribute && this.setAttribute("class", r || !1 === t ? "" : Y.get(this, "__className__") || "")) })) }, hasClass: function (e) { var t, n, r = 0; t = " " + e + " "; while (n = this[r++]) if (1 === n.nodeType && -1 < (" " + yt(vt(n)) + " ").indexOf(t)) return !0; return !1 } }); var xt = /\r/g; S.fn.extend({ val: function (n) { var r, e, i, t = this[0]; return arguments.length ? (i = m(n), this.each(function (e) { var t; 1 === this.nodeType && (null == (t = i ? n.call(this, e, S(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = S.map(t, function (e) { return null == e ? "" : e + "" })), (r = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t)) })) : t ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof (e = t.value) ? e.replace(xt, "") : null == e ? "" : e : void 0 } }), S.extend({ valHooks: { option: { get: function (e) { var t = S.find.attr(e, "value"); return null != t ? t : yt(S.text(e)) } }, select: { get: function (e) { var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length; for (r = o < 0 ? u : a ? o : 0; r < u; r++)if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !A(n.parentNode, "optgroup"))) { if (t = S(n).val(), a) return t; s.push(t) } return s }, set: function (e, t) { var n, r, i = e.options, o = S.makeArray(t), a = i.length; while (a--) ((r = i[a]).selected = -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0); return n || (e.selectedIndex = -1), o } } } }), S.each(["radio", "checkbox"], function () { S.valHooks[this] = { set: function (e, t) { if (Array.isArray(t)) return e.checked = -1 < S.inArray(S(e).val(), t) } }, v.checkOn || (S.valHooks[this].get = function (e) { return null === e.getAttribute("value") ? "on" : e.value }) }), v.focusin = "onfocusin" in C; var bt = /^(?:focusinfocus|focusoutblur)$/, wt = function (e) { e.stopPropagation() }; S.extend(S.event, { trigger: function (e, t, n, r) { var i, o, a, s, u, l, c, f, p = [n || E], d = y.call(e, "type") ? e.type : e, h = y.call(e, "namespace") ? e.namespace.split(".") : []; if (o = f = a = n = n || E, 3 !== n.nodeType && 8 !== n.nodeType && !bt.test(d + S.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), h.sort()), u = d.indexOf(":") < 0 && "on" + d, (e = e[S.expando] ? e : new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : S.makeArray(t, [e]), c = S.event.special[d] || {}, r || !c.trigger || !1 !== c.trigger.apply(n, t))) { if (!r && !c.noBubble && !x(n)) { for (s = c.delegateType || d, bt.test(s + d) || (o = o.parentNode); o; o = o.parentNode)p.push(o), a = o; a === (n.ownerDocument || E) && p.push(a.defaultView || a.parentWindow || C) } i = 0; while ((o = p[i++]) && !e.isPropagationStopped()) f = o, e.type = 1 < i ? s : c.bindType || d, (l = (Y.get(o, "events") || Object.create(null))[e.type] && Y.get(o, "handle")) && l.apply(o, t), (l = u && o[u]) && l.apply && V(o) && (e.result = l.apply(o, t), !1 === e.result && e.preventDefault()); return e.type = d, r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !V(n) || u && m(n[d]) && !x(n) && ((a = n[u]) && (n[u] = null), S.event.triggered = d, e.isPropagationStopped() && f.addEventListener(d, wt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, wt), S.event.triggered = void 0, a && (n[u] = a)), e.result } }, simulate: function (e, t, n) { var r = S.extend(new S.Event, n, { type: e, isSimulated: !0 }); S.event.trigger(r, null, t) } }), S.fn.extend({ trigger: function (e, t) { return this.each(function () { S.event.trigger(e, t, this) }) }, triggerHandler: function (e, t) { var n = this[0]; if (n) return S.event.trigger(e, t, n, !0) } }), v.focusin || S.each({ focus: "focusin", blur: "focusout" }, function (n, r) { var i = function (e) { S.event.simulate(r, e.target, S.event.fix(e)) }; S.event.special[r] = { setup: function () { var e = this.ownerDocument || this.document || this, t = Y.access(e, r); t || e.addEventListener(n, i, !0), Y.access(e, r, (t || 0) + 1) }, teardown: function () { var e = this.ownerDocument || this.document || this, t = Y.access(e, r) - 1; t ? Y.access(e, r, t) : (e.removeEventListener(n, i, !0), Y.remove(e, r)) } } }); var Tt = C.location, Ct = { guid: Date.now() }, Et = /\?/; S.parseXML = function (e) { var t, n; if (!e || "string" != typeof e) return null; try { t = (new C.DOMParser).parseFromString(e, "text/xml") } catch (e) { } return n = t && t.getElementsByTagName("parsererror")[0], t && !n || S.error("Invalid XML: " + (n ? S.map(n.childNodes, function (e) { return e.textContent }).join("\n") : e)), t }; var St = /\[\]$/, kt = /\r?\n/g, At = /^(?:submit|button|image|reset|file)$/i, Nt = /^(?:input|select|textarea|keygen)/i; function jt(n, e, r, i) { var t; if (Array.isArray(e)) S.each(e, function (e, t) { r || St.test(n) ? i(n, t) : jt(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i) }); else if (r || "object" !== w(e)) i(n, e); else for (t in e) jt(n + "[" + t + "]", e[t], r, i) } S.param = function (e, t) { var n, r = [], i = function (e, t) { var n = m(t) ? t() : t; r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n) }; if (null == e) return ""; if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e, function () { i(this.name, this.value) }); else for (n in e) jt(n, e[n], t, i); return r.join("&") }, S.fn.extend({ serialize: function () { return S.param(this.serializeArray()) }, serializeArray: function () { return this.map(function () { var e = S.prop(this, "elements"); return e ? S.makeArray(e) : this }).filter(function () { var e = this.type; return this.name && !S(this).is(":disabled") && Nt.test(this.nodeName) && !At.test(e) && (this.checked || !pe.test(e)) }).map(function (e, t) { var n = S(this).val(); return null == n ? null : Array.isArray(n) ? S.map(n, function (e) { return { name: t.name, value: e.replace(kt, "\r\n") } }) : { name: t.name, value: n.replace(kt, "\r\n") } }).get() } }); var Dt = /%20/g, qt = /#.*$/, Lt = /([?&])_=[^&]*/, Ht = /^(.*?):[ \t]*([^\r\n]*)$/gm, Ot = /^(?:GET|HEAD)$/, Pt = /^\/\//, Rt = {}, Mt = {}, It = "*/".concat("*"), Wt = E.createElement("a"); function Ft(o) { return function (e, t) { "string" != typeof e && (t = e, e = "*"); var n, r = 0, i = e.toLowerCase().match(P) || []; if (m(t)) while (n = i[r++]) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t) } } function $t(t, i, o, a) { var s = {}, u = t === Mt; function l(e) { var r; return s[e] = !0, S.each(t[e] || [], function (e, t) { var n = t(i, o, a); return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1) }), r } return l(i.dataTypes[0]) || !s["*"] && l("*") } function Bt(e, t) { var n, r, i = S.ajaxSettings.flatOptions || {}; for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); return r && S.extend(!0, e, r), e } Wt.href = Tt.href, S.extend({ active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: Tt.href, type: "GET", isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": It, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, converters: { "* text": String, "text html": !0, "text json": JSON.parse, "text xml": S.parseXML }, flatOptions: { url: !0, context: !0 } }, ajaxSetup: function (e, t) { return t ? Bt(Bt(e, S.ajaxSettings), t) : Bt(S.ajaxSettings, e) }, ajaxPrefilter: Ft(Rt), ajaxTransport: Ft(Mt), ajax: function (e, t) { "object" == typeof e && (t = e, e = void 0), t = t || {}; var c, f, p, n, d, r, h, g, i, o, y = S.ajaxSetup({}, t), v = y.context || y, m = y.context && (v.nodeType || v.jquery) ? S(v) : S.event, x = S.Deferred(), b = S.Callbacks("once memory"), w = y.statusCode || {}, a = {}, s = {}, u = "canceled", T = { readyState: 0, getResponseHeader: function (e) { var t; if (h) { if (!n) { n = {}; while (t = Ht.exec(p)) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2]) } t = n[e.toLowerCase() + " "] } return null == t ? null : t.join(", ") }, getAllResponseHeaders: function () { return h ? p : null }, setRequestHeader: function (e, t) { return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this }, overrideMimeType: function (e) { return null == h && (y.mimeType = e), this }, statusCode: function (e) { var t; if (e) if (h) T.always(e[T.status]); else for (t in e) w[t] = [w[t], e[t]]; return this }, abort: function (e) { var t = e || u; return c && c.abort(t), l(0, t), this } }; if (x.promise(T), y.url = ((e || y.url || Tt.href) + "").replace(Pt, Tt.protocol + "//"), y.type = t.method || t.type || y.method || y.type, y.dataTypes = (y.dataType || "*").toLowerCase().match(P) || [""], null == y.crossDomain) { r = E.createElement("a"); try { r.href = y.url, r.href = r.href, y.crossDomain = Wt.protocol + "//" + Wt.host != r.protocol + "//" + r.host } catch (e) { y.crossDomain = !0 } } if (y.data && y.processData && "string" != typeof y.data && (y.data = S.param(y.data, y.traditional)), $t(Rt, y, t, T), h) return T; for (i in (g = S.event && y.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), y.type = y.type.toUpperCase(), y.hasContent = !Ot.test(y.type), f = y.url.replace(qt, ""), y.hasContent ? y.data && y.processData && 0 === (y.contentType || "").indexOf("application/x-www-form-urlencoded") && (y.data = y.data.replace(Dt, "+")) : (o = y.url.slice(f.length), y.data && (y.processData || "string" == typeof y.data) && (f += (Et.test(f) ? "&" : "?") + y.data, delete y.data), !1 === y.cache && (f = f.replace(Lt, "$1"), o = (Et.test(f) ? "&" : "?") + "_=" + Ct.guid++ + o), y.url = f + o), y.ifModified && (S.lastModified[f] && T.setRequestHeader("If-Modified-Since", S.lastModified[f]), S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), (y.data && y.hasContent && !1 !== y.contentType || t.contentType) && T.setRequestHeader("Content-Type", y.contentType), T.setRequestHeader("Accept", y.dataTypes[0] && y.accepts[y.dataTypes[0]] ? y.accepts[y.dataTypes[0]] + ("*" !== y.dataTypes[0] ? ", " + It + "; q=0.01" : "") : y.accepts["*"]), y.headers) T.setRequestHeader(i, y.headers[i]); if (y.beforeSend && (!1 === y.beforeSend.call(v, T, y) || h)) return T.abort(); if (u = "abort", b.add(y.complete), T.done(y.success), T.fail(y.error), c = $t(Mt, y, t, T)) { if (T.readyState = 1, g && m.trigger("ajaxSend", [T, y]), h) return T; y.async && 0 < y.timeout && (d = C.setTimeout(function () { T.abort("timeout") }, y.timeout)); try { h = !1, c.send(a, l) } catch (e) { if (h) throw e; l(-1, e) } } else l(-1, "No Transport"); function l(e, t, n, r) { var i, o, a, s, u, l = t; h || (h = !0, d && C.clearTimeout(d), c = void 0, p = r || "", T.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function (e, t, n) { var r, i, o, a, s = e.contents, u = e.dataTypes; while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type")); if (r) for (i in s) if (s[i] && s[i].test(r)) { u.unshift(i); break } if (u[0] in n) o = u[0]; else { for (i in n) { if (!u[0] || e.converters[i + " " + u[0]]) { o = i; break } a || (a = i) } o = o || a } if (o) return o !== u[0] && u.unshift(o), n[o] }(y, T, n)), !i && -1 < S.inArray("script", y.dataTypes) && S.inArray("json", y.dataTypes) < 0 && (y.converters["text script"] = function () { }), s = function (e, t, n, r) { var i, o, a, s, u, l = {}, c = e.dataTypes.slice(); if (c[1]) for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; o = c.shift(); while (o) if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift()) if ("*" === o) o = u; else if ("*" !== u && u !== o) { if (!(a = l[u + " " + o] || l["* " + o])) for (i in l) if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) { !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1])); break } if (!0 !== a) if (a && e["throws"]) t = a(t); else try { t = a(t) } catch (e) { return { state: "parsererror", error: a ? e : "No conversion from " + u + " to " + o } } } return { state: "success", data: t } }(y, s, T, i), i ? (y.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (S.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), 204 === e || "HEAD" === y.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state, o = s.data, i = !(a = s.error))) : (a = l, !e && l || (l = "error", e < 0 && (e = 0))), T.status = e, T.statusText = (t || l) + "", i ? x.resolveWith(v, [o, l, T]) : x.rejectWith(v, [T, l, a]), T.statusCode(w), w = void 0, g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, y, i ? o : a]), b.fireWith(v, [T, l]), g && (m.trigger("ajaxComplete", [T, y]), --S.active || S.event.trigger("ajaxStop"))) } return T }, getJSON: function (e, t, n) { return S.get(e, t, n, "json") }, getScript: function (e, t) { return S.get(e, void 0, t, "script") } }), S.each(["get", "post"], function (e, i) { S[i] = function (e, t, n, r) { return m(t) && (r = r || n, n = t, t = void 0), S.ajax(S.extend({ url: e, type: i, dataType: r, data: t, success: n }, S.isPlainObject(e) && e)) } }), S.ajaxPrefilter(function (e) { var t; for (t in e.headers) "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "") }), S._evalUrl = function (e, t, n) { return S.ajax({ url: e, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, converters: { "text script": function () { } }, dataFilter: function (e) { S.globalEval(e, t, n) } }) }, S.fn.extend({ wrapAll: function (e) { var t; return this[0] && (m(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function () { var e = this; while (e.firstElementChild) e = e.firstElementChild; return e }).append(this)), this }, wrapInner: function (n) { return m(n) ? this.each(function (e) { S(this).wrapInner(n.call(this, e)) }) : this.each(function () { var e = S(this), t = e.contents(); t.length ? t.wrapAll(n) : e.append(n) }) }, wrap: function (t) { var n = m(t); return this.each(function (e) { S(this).wrapAll(n ? t.call(this, e) : t) }) }, unwrap: function (e) { return this.parent(e).not("body").each(function () { S(this).replaceWith(this.childNodes) }), this } }), S.expr.pseudos.hidden = function (e) { return !S.expr.pseudos.visible(e) }, S.expr.pseudos.visible = function (e) { return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, S.ajaxSettings.xhr = function () { try { return new C.XMLHttpRequest } catch (e) { } }; var _t = { 0: 200, 1223: 204 }, zt = S.ajaxSettings.xhr(); v.cors = !!zt && "withCredentials" in zt, v.ajax = zt = !!zt, S.ajaxTransport(function (i) { var o, a; if (v.cors || zt && !i.crossDomain) return { send: function (e, t) { var n, r = i.xhr(); if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields) for (n in i.xhrFields) r[n] = i.xhrFields[n]; for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]); o = function (e) { return function () { o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(_t[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? { binary: r.response } : { text: r.responseText }, r.getAllResponseHeaders())) } }, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function () { 4 === r.readyState && C.setTimeout(function () { o && a() }) }, o = o("abort"); try { r.send(i.hasContent && i.data || null) } catch (e) { if (o) throw e } }, abort: function () { o && o() } } }), S.ajaxPrefilter(function (e) { e.crossDomain && (e.contents.script = !1) }), S.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function (e) { return S.globalEval(e), e } } }), S.ajaxPrefilter("script", function (e) { void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET") }), S.ajaxTransport("script", function (n) { var r, i; if (n.crossDomain || n.scriptAttrs) return { send: function (e, t) { r = S("<script>").attr(n.scriptAttrs || {}).prop({ charset: n.scriptCharset, src: n.url }).on("load error", i = function (e) { r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type) }), E.head.appendChild(r[0]) }, abort: function () { i && i() } } }); var Ut, Xt = [], Vt = /(=)\?(?=&|$)|\?\?/; S.ajaxSetup({ jsonp: "callback", jsonpCallback: function () { var e = Xt.pop() || S.expando + "_" + Ct.guid++; return this[e] = !0, e } }), S.ajaxPrefilter("json jsonp", function (e, t, n) { var r, i, o, a = !1 !== e.jsonp && (Vt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Vt.test(e.data) && "data"); if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = m(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Vt, "$1" + r) : !1 !== e.jsonp && (e.url += (Et.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function () { return o || S.error(r + " was not called"), o[0] }, e.dataTypes[0] = "json", i = C[r], C[r] = function () { o = arguments }, n.always(function () { void 0 === i ? S(C).removeProp(r) : C[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, Xt.push(r)), o && m(i) && i(o[0]), o = i = void 0 }), "script" }), v.createHTMLDocument = ((Ut = E.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Ut.childNodes.length), S.parseHTML = function (e, t, n) { return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (v.createHTMLDocument ? ((r = (t = E.implementation.createHTMLDocument("")).createElement("base")).href = E.location.href, t.head.appendChild(r)) : t = E), o = !n && [], (i = N.exec(e)) ? [t.createElement(i[1])] : (i = xe([e], t, o), o && o.length && S(o).remove(), S.merge([], i.childNodes))); var r, i, o }, S.fn.load = function (e, t, n) { var r, i, o, a = this, s = e.indexOf(" "); return -1 < s && (r = yt(e.slice(s)), e = e.slice(0, s)), m(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && S.ajax({ url: e, type: i || "GET", dataType: "html", data: t }).done(function (e) { o = arguments, a.html(r ? S("<div>").append(S.parseHTML(e)).find(r) : e) }).always(n && function (e, t) { a.each(function () { n.apply(this, o || [e.responseText, t, e]) }) }), this }, S.expr.pseudos.animated = function (t) { return S.grep(S.timers, function (e) { return t === e.elem }).length }, S.offset = { setOffset: function (e, t, n) { var r, i, o, a, s, u, l = S.css(e, "position"), c = S(e), f = {}; "static" === l && (e.style.position = "relative"), s = c.offset(), o = S.css(e, "top"), u = S.css(e, "left"), ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), m(t) && (t = t.call(e, n, S.extend({}, s))), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : c.css(f) } }, S.fn.extend({ offset: function (t) { if (arguments.length) return void 0 === t ? this : this.each(function (e) { S.offset.setOffset(this, t, e) }); var e, n, r = this[0]; return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, { top: e.top + n.pageYOffset, left: e.left + n.pageXOffset }) : { top: 0, left: 0 } : void 0 }, position: function () { if (this[0]) { var e, t, n, r = this[0], i = { top: 0, left: 0 }; if ("fixed" === S.css(r, "position")) t = r.getBoundingClientRect(); else { t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement; while (e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position")) e = e.parentNode; e && e !== r && 1 === e.nodeType && ((i = S(e).offset()).top += S.css(e, "borderTopWidth", !0), i.left += S.css(e, "borderLeftWidth", !0)) } return { top: t.top - i.top - S.css(r, "marginTop", !0), left: t.left - i.left - S.css(r, "marginLeft", !0) } } }, offsetParent: function () { return this.map(function () { var e = this.offsetParent; while (e && "static" === S.css(e, "position")) e = e.offsetParent; return e || re }) } }), S.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (t, i) { var o = "pageYOffset" === i; S.fn[t] = function (e) { return B(this, function (e, t, n) { var r; if (x(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t]; r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n }, t, e, arguments.length) } }), S.each(["top", "left"], function (e, n) { S.cssHooks[n] = _e(v.pixelPosition, function (e, t) { if (t) return t = Be(e, n), Pe.test(t) ? S(e).position()[n] + "px" : t }) }), S.each({ Height: "height", Width: "width" }, function (a, s) { S.each({ padding: "inner" + a, content: s, "": "outer" + a }, function (r, o) { S.fn[o] = function (e, t) { var n = arguments.length && (r || "boolean" != typeof e), i = r || (!0 === e || !0 === t ? "margin" : "border"); return B(this, function (e, t, n) { var r; return x(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? S.css(e, t, i) : S.style(e, t, n, i) }, s, n ? e : void 0, n) } }) }), S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (e, t) { S.fn[t] = function (e) { return this.on(t, e) } }), S.fn.extend({ bind: function (e, t, n) { return this.on(e, null, t, n) }, unbind: function (e, t) { return this.off(e, null, t) }, delegate: function (e, t, n, r) { return this.on(t, e, n, r) }, undelegate: function (e, t, n) { return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n) }, hover: function (e, t) { return this.mouseenter(e).mouseleave(t || e) } }), S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function (e, n) { S.fn[n] = function (e, t) { return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n) } }); var Gt = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; S.proxy = function (e, t) { var n, r, i; if ("string" == typeof t && (n = e[t], t = e, e = n), m(e)) return r = s.call(arguments, 2), (i = function () { return e.apply(t || this, r.concat(s.call(arguments))) }).guid = e.guid = e.guid || S.guid++, i }, S.holdReady = function (e) { e ? S.readyWait++ : S.ready(!0) }, S.isArray = Array.isArray, S.parseJSON = JSON.parse, S.nodeName = A, S.isFunction = m, S.isWindow = x, S.camelCase = X, S.type = w, S.now = Date.now, S.isNumeric = function (e) { var t = S.type(e); return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e)) }, S.trim = function (e) { return null == e ? "" : (e + "").replace(Gt, "$1") }, "function" == typeof define && define.amd && define("jquery", [], function () { return S }); var Yt = C.jQuery, Qt = C.$; return S.noConflict = function (e) { return C.$ === S && (C.$ = Qt), e && C.jQuery === S && (C.jQuery = Yt), S }, "undefined" == typeof e && (C.jQuery = C.$ = S), S });</script> </head> <body> <form method="post" action="/amministrazione/informativa-privacy" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzE1Mjk3OTc5DxYCHhNWYWxpZGF0ZVJlcXVlc3RNb2RlAgEWAmYPZBYEAgEPZBYCAhEPFgIeB2NvbnRlbnQFWkNvbXVuZSBkaSBTY2FybmFmaWdpIC0gc2l0byBpbnRlcm5ldCBpc3RpdHV6aW9uYWxlIC0gUmVnaW9uZSBQaWVtb250ZSAtIFByb3ZpbmNpYSBkaSBDdW5lb2QCAw8WAh4GYWN0aW9uBSQvYW1taW5pc3RyYXppb25lL2luZm9ybWF0aXZhLXByaXZhY3kWQmYPFgIeCWlubmVyaHRtbAUZQWNjZWRpIGFsbCdhcmVhIHBlcnNvbmFsZWQCAQ8WAh4HVmlzaWJsZWhkAgIPFgIfBGhkAgMPFgIfBGhkAgQPFgIfBGcWAgIBDxYCHgRocmVmBSBodHRwczovL3QubWUvVmlzaXRTY2FybmFmaWdpX2JvdGQCBQ8WAh8EaGQCBg8WAh8EZxYCAgEPFgIfBQUNL2l0YS9yc3MuYXNweGQCBw8WAh8EaGQCCA8WAh8DBfsHDQoJCQk8bGkgY2xhc3M9J25hdi1pdGVtIGQtbGctbm9uZSc+DQoJCQkJPGEgY2xhc3M9J25hdi1saW5rIHRleHQtcHJpbWFyeScgaHJlZj0nL0FkbWluL1dlYkZvcm1zL0NydXNjb3R0by5hc3B4Jz4NCgkJCQkJPHNwYW4+DQoJCQkJCQk8c3ZnIGNsYXNzPSdpY29uIGljb24tcHJpbWFyeScgYXJpYS1oaWRkZW49J3RydWUnPg0KCQkJCQkJCTx1c2UgeGxpbms6aHJlZj0nL2Fzc2V0cy9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWxvY2tlZCc+PC91c2U+DQoJCQkJCQk8L3N2Zz4NCgkJCQkJCUFjY2VkaSBhbGwnYXJlYSByaXNlcnZhdGENCgkJCQkJPC9zcGFuPg0KCQkJCTwvYT4NCgkJCTwvbGk+DQoJCTxsaSBjbGFzcz0nbmF2LWl0ZW0nPg0KCQkJCQkJICA8YSBkYXRhLWVsZW1lbnQ9J3RvcGljLWVsZW1lbnQnIGNsYXNzPSduYXYtbGluaycgaHJlZj0nL2FyZ29tZW50by80L0FjY2Vzc28tYWxsLTI3aW5mb3JtYXppb25lJz5BY2Nlc3NvIGFsbCdpbmZvcm1hemlvbmU8L2E+DQogICAgICAgICAgICAgICAgICAgICAgIDwvbGk+PGxpIGNsYXNzPSduYXYtaXRlbSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nbmF2LWxpbmsnIGhyZWY9Jy9hbW1pbmlzdHJhemlvbmUvZG9jdW1lbnRpLWUtZGF0aSc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+RG9jdW1lbnRpIGUgZGF0aTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC9saT4NCgkJCQk8bGkgY2xhc3M9J25hdi1pdGVtJz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSduYXYtbGluaycgaHJlZj0nL2FyZ29tZW50aScgZGF0YS1lbGVtZW50PSdhbGwtdG9waWNzJz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nZnctYm9sZCc+VHV0dGkgZ2xpIGFyZ29tZW50aTwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCiAgICAgICAgICAgICAgICAgICAgPC9saT5kAgkPFgIfBGhkAgoPFgIfBGhkAgsPFgIfBGhkAgwPFgIfBGcWAgIBDxYCHwUFIGh0dHBzOi8vdC5tZS9WaXNpdFNjYXJuYWZpZ2lfYm90ZAINDxYCHwRoZAIODxYCHwRnFgICAQ8WAh8FBQ0vaXRhL3Jzcy5hc3B4ZAIPDxYCHwRoZAIQD2QWBgIBDxYCHwMFB1ByaXZhY3lkAgMPFgIfAwXNAg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9J2ljb24gaWNvbi1sZyc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0nL2Fzc2V0cy9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWxvY2tlZCc+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdXNlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpdmFjeWQCBw8WAh8DBYK4AQ0KICAgICAgICAgICAgDQogICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgPGgzIGNsYXNzPSdwcmltYXJ5LWNvbG9yJz5JbmZvcm1hdGl2YSByZWxhdGl2YSBhbCB0cmF0dGFtZW50byBkZWkgZGF0aSBwZXJzb25hbGkgYWkgc2Vuc2k8L2gzPg0KICAgICAgICAgICAgZGVsbOKAmWFydC4gMTMgZGVsIFJlZy4gVUUgMjAxNi82NzkNCiAgICAgICAgICAgIFF1ZXN0YSBpbmZvcm1hdGl2YSDDqCBmb3JuaXRhIGFnbGkgdXRlbnRpIGNoZSBpbnRlcmFnaXNjb25vIGNvbiBpIHNlcnZpemkgd2ViDQogICAgICAgICAgICBkZWwgQ29tdW5lIGRpICANCiAgICAgICAgICAgIDxiPg0KICAgICAgICAgICAgICAgIFNjYXJuYWZpZ2kNCiAgICAgICAgICAgIDwvYj4NCiAgICAgICAgICAgIGFjY2Vzc2liaWxpIHBlciB2aWEgdGVsZW1hdGljYSBhIHBhcnRpcmUgZGFsbCdpbmRpcml6em86DQogICAgICAgICAgICA8Yj53d3cuY29tdW5lLnNjYXJuYWZpZ2kuY24uaXQ8L2I+DQogICAgICAgICAgICAob3BwdXJlIGRhaSBzaXRpIHRlbWF0aWNpIGFjY2Vzc2liaWxpIGRhbGxhIFJldGUgQ2l2aWNhKSANCiAgICAgICAgICAgIGNvcnJpc3BvbmRlbnRlIGFsbGEgcGFnaW5hIGluaXppYWxlIGRlbCBzaXRvIHVmZmljaWFsZSBkZWwgQ29tdW5lLg0KICAgICAgICAgICAgPGJyIC8+PGJyIC8+DQogICAgICAgICAgICBMYSBwcmVzZW50ZSBpbmZvcm1hdGl2YSBkZXNjcml2ZSBsZSBtb2RhbGl0w6AgZGkgZ2VzdGlvbmUgZGVsIHNpdG8NCiAgICAgICAgICAgIHdlYiB1ZmZpY2lhbGUgZGVsIA0KICAgICAgICAgICAgPGI+DQogICAgICAgICAgICAgICAgQ29tdW5lIGRpIFNjYXJuYWZpZ2kNCiAgICAgICAgICAgIDwvYj4NCiAgICAgICAgICAgIGRpIGUgTk9OIGRpIHR1dHRpIGdsaSBhbHRyaSANCiAgICAgICAgICAgIHNpdGkgd2ViIGVzdGVybmkgY29uc3VsdGFiaWxpIGRhbGwndXRlbnRlIHRyYW1pdGUgbGluay4NCiAgICAgICAgICAgIDxiciAvPjxiciAvPg0KICAgICAgICAgICAgPGgzIGNsYXNzPSdwcmltYXJ5LWNvbG9yJz4xLiBUaXRvbGFyZSBkZWwgVHJhdHRhbWVudG8gZGVpIGRhdGkgZSBSZXNwb25zYWJpbGUgZGVsbGEgUHJvdGV6aW9uZSBEYXRpIChEUE8pPC9oMz4NCiAgICAgICAgICAgIDxiPkNvbXVuZSBkaSBTY2FybmFmaWdpPC9iPjxiciAvPiANCiAgICAgICAgICAgIDxiPkNvcnNvIENhcmxvIEFsYmVydG8sIDEgLSAxMjAzMCBTY2FybmFmaWdpIChDTik8L2I+PGJyIC8+DQogICAgICAgICAgICA8Yj5zZWdyZXRlcmlhQGNvbXVuZS5zY2FybmFmaWdpLmNuLml0PC9iPjxiciAvPg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8Yj5JbCBSZXNwb25zYWJpbGUgcGVyIGxhIFByb3RlemlvbmUgZGVpIERhdGkgKERQTykgDQogICAgICAgICAgICBub21pbmF0byBkYWwgIENvbXVuZSDDqCA6PC9iPg0KICAgICAgICAgICAgPGJyIC8+DQogICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICA8c3ZnIGNsYXNzPSdpY29uJz4NCiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0nL2Fzc2V0cy9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWFycm93LXJpZ2h0LXRyaWFuZ2xlJz4NCiAgICAgICAgICAgIDwvdXNlPg0KICAgICAgICA8L3N2Zz48Yj5SYWdpb25lIFNvY2lhbGUgRFBPOiA8L2I+QWVzc2UgU2Vydml6aSBTb2MuIENvb3AuPC9saT48bGk+DQogICAgICAgIDxzdmcgY2xhc3M9J2ljb24nPg0KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPScvYXNzZXRzL2Jvb3RzdHJhcC1pdGFsaWEvZGlzdC9zdmcvc3ByaXRlcy5zdmcjaXQtYXJyb3ctcmlnaHQtdHJpYW5nbGUnPg0KICAgICAgICAgICAgPC91c2U+DQogICAgICAgIDwvc3ZnPjxiPkluZGlyaXp6byBEUE86IDwvYj5WaWEgQ2FzY2luYSBDb2xvbWJhcm8sIDU2LCAxMjEwMCBDdW5lbzwvbGk+PGxpPg0KICAgICAgICA8c3ZnIGNsYXNzPSdpY29uJz4NCiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0nL2Fzc2V0cy9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWFycm93LXJpZ2h0LXRyaWFuZ2xlJz4NCiAgICAgICAgICAgIDwvdXNlPg0KICAgICAgICA8L3N2Zz48Yj5UZWxlZm9ubyBEUE86IDwvYj4wMTcxLjQ1MTcyNTwvbGk+PGxpPg0KICAgICAgICA8c3ZnIGNsYXNzPSdpY29uJz4NCiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0nL2Fzc2V0cy9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWFycm93LXJpZ2h0LXRyaWFuZ2xlJz4NCiAgICAgICAgICAgIDwvdXNlPg0KICAgICAgICA8L3N2Zz48Yj5GYXggRFBPOiA8L2I+MDE3MS40NTE3MzQ8L2xpPjxsaT4NCiAgICAgICAgPHN2ZyBjbGFzcz0naWNvbic+DQogICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Jy9hc3NldHMvYm9vdHN0cmFwLWl0YWxpYS9kaXN0L3N2Zy9zcHJpdGVzLnN2ZyNpdC1hcnJvdy1yaWdodC10cmlhbmdsZSc+DQogICAgICAgICAgICA8L3VzZT4NCiAgICAgICAgPC9zdmc+PGI+RS1tYWlsIERQTzogPC9iPmRwb0BhZXNzZXNlcnZpemkuZXU8L2xpPjxsaT4NCiAgICAgICAgPHN2ZyBjbGFzcz0naWNvbic+DQogICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9Jy9hc3NldHMvYm9vdHN0cmFwLWl0YWxpYS9kaXN0L3N2Zy9zcHJpdGVzLnN2ZyNpdC1hcnJvdy1yaWdodC10cmlhbmdsZSc+DQogICAgICAgICAgICA8L3VzZT4NCiAgICAgICAgPC9zdmc+PGI+UEVDIERQTzogPC9iPnNlZ3JldGVyaWFAcGVjLmFlc3Nlc2Vydml6aS5ldTwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgPGJyPiANCiAgICAgICAgICAgIENvbnN1bHRhIGxhIDxhIGhyZWY9Jy9wcml2YWN5JyB0YXJnZXQ9J19ibGFuayc+RG9jdW1lbnRhemlvbmUsIEluZm9ybWF0aXZlIGUgTW9kdWxpc3RpY2EgcHJpdmFjeTwvYT4NCiAgICAgICAgICAgIDxicj4gDQogICAgICAgICAgICA8aDMgY2xhc3M9J3ByaW1hcnktY29sb3InPjIuIFRpcG9sb2dpZSBkaSBkYXRpIHJhY2NvbHRpPC9oMz4NCiAgICAgICAgICAgIFF1ZXN0YSBwYWdpbmEgaGEgbG8gc2NvcG8gZGkgaW5mb3JtYXJlIGzigJl1dGVudGUgY2lyY2EgcXVhbGkgZGF0aQ0KICAgICAgICAgICAgdmVuZ29ubyByYWNjb2x0aSwgcGVyY2jDqSBlIGNvbWUgdmVuZ29ubyB1dGlsaXp6YXRpLiANCiAgICAgICAgICAgIEF0dHJhdmVyc28gcXVlc3RvIHNpdG8gdmVuZ29ubyB0cmF0dGF0aSBkdWUgdGlwaSBkaSBkYXRpOg0KICAgICAgICAgICAgPHVsID4NCiAgICAgICAgICAgICAgICA8bGk+RGF0aSBmb3JuaXRpIGRhbGzigJl1dGVudGUgYXR0cmF2ZXJzbyBsYSB2b2xvbnRhcmlhIGludGVyYXppb25lIGNvbiBpbCBzaXRvLCBxdWFuZG8gc2kgZWZmZXR0dWFubyBwYWdhbWVudGksIHNpIGNvbXBpbGFubyDigJxmb3Jt4oCdIChtYXNjaGVyZSksIHNpIGlub2x0cmFubyBzZWduYWxhemlvbmkuPC9saT4NCiAgICAgICAgICAgICAgICA8bGk+RGF0aSByYWNjb2x0aSBhdXRvbWF0aWNhbWVudGUgZGFsIHNpdG8sIGF0dHJhdmVyc28gaSBjb29raWUgbw0KICAgICAgICAgICAgICAgICAgICB0ZWNub2xvZ2llIHNpbWlsYXJpOyBwZXIgYXZlcmUgbWFnZ2lvcmkgaW5mb3JtYXppb25pIHN1aSBjb29raWUsIA0KICAgICAgICAgICAgICAgICAgICBpbnZpdGlhbW8gYSBjb25zdWx0YXJlIGxhIHNlemlvbmUNCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nI3BvbGljeUNvb2tpZSc+Q29va2llIHBvbGljeTwvYT4gICANCiAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgPC91bD4gICAgDQogICAgICAgICAgICA8aDMgY2xhc3M9J3ByaW1hcnktY29sb3InPjMuIEZpbmFsaXTDoCBkZWwgVHJhdHRhbWVudG8gZGVpIGRhdGkgcmFjY29sdGkgZSByZWxhdGl2YSBiYXNlIGdpdXJpZGljYTwvaDM+DQogICAgICAgICAgICBJIGRhdGkgcGVyc29uYWxpIHJhY2NvbHRpIHBlciBpbCB0cmFtaXRlIGRpIHF1ZXN0byBzaXRvIHNvbm8gdHJhdHRhdGkgDQogICAgICAgICAgICBuZWwgcmlzcGV0dG8NCiAgICAgICAgICAgIGRlbGxlIGNvbmRpemlvbmkgcHJldmlzdGUgZGFsIFJlZ29sYW1lbnRvIFVFIDIwMTYvNjc5IGVkIGluIHBhcnRpY29sYXJlIA0KICAgICAgICAgICAgZGFsbOKAmWFydC4gNiDigJMgcGFyLiAxIGxldHQuIGUpDQogICAgICAgICAgICAtICBlIGRhbGzigJlhcnQuIDIgdGVyIGRlbCBELmxncy4gMTk2LzIwMDMNCiAgICAgICAgICAgIOKAnENvZGljZSBpbiBtYXRlcmlhIGRpIHByb3RlemlvbmUgZGVpIGRhdGkNCiAgICAgICAgICAgIHBlcnNvbmFsaeKAnSwgcGVyIGzigJllc2VjdXppb25lIGRpIHVuIGNvbXBpdG8gZGkgaW50ZXJlc3NlIHB1YmJsaWNvIGUgDQogICAgICAgICAgICBjb25uZXNzbw0KICAgICAgICAgICAgYWxs4oCZZXNlcmNpemlvIGRpIHB1YmJsaWNpIHBvdGVyaSBkaSBjdWkgw6ggaW52ZXN0aXRvIGlsIENvbXVuZSwgaW4gY29lcmVuemEgY29uDQogICAgICAgICAgICBpbCBELmxncy4gbi4gODIvMjAwNSDigJxDb2RpY2UgZGVsbOKAmUFtbWluaXN0cmF6aW9uZSBEaWdpdGFsZeKAnS4NCiAgICAgICAgICAgIDxiciAvPjxiciAvPg0KICAgICAgICAgICAgSWwgY29uZmVyaW1lbnRvIGRlaSBkYXRpIHBlcnNvbmFsaSDDqCBvYmJsaWdhdG9yaW8gcGVyIGkgdHJhdHRhbWVudGkgDQogICAgICAgICAgICBuZWNlc3NhcmkNCiAgICAgICAgICAgIGFsbOKAmWVyb2dhemlvbmUgZGVpIHNlcnZpemkgb2ZmZXJ0aSBkYWwgc2l0byAobOKAmWV2ZW50dWFsZSByaWZpdXRvIHJlbmRlIGltcG9zc2liaWxlDQogICAgICAgICAgICBs4oCZdXRpbGl6em8gZGVsIHNlcnZpemlvIHN0ZXNzbyk7IMOoIGludmVjZSBmYWNvbHRhdGl2byBwZXIgbOKAmWluc3RhbGxhemlvbmUgZGkNCiAgICAgICAgICAgIGNvb2tpZSBkaSBwcm9maWxhemlvbmUsIHBlciBpIHF1YWxpIHZpZW5lIHJpY2hpZXN0bywgdHJhbWl0ZSBhcHBvc2l0byBiYW5uZXIsDQogICAgICAgICAgICBpbCBjb25zZW5zbyBkZWxs4oCZVXRlbnRlLg0KICAgICAgICAgICAgPGJyIC8+TOKAmWV2ZW50dWFsZSByaWZpdXRvIGRpIHByZXN0YXJlIGlsIGNvbnNlbnNvIG5vbiBoYSBjb25zZWd1ZW56ZSBuZWdhdGl2ZSBzdWxsYQ0KICAgICAgICAgICAgbmF2aWdhemlvbmUgZGVsbOKAmXV0ZW50ZSBuZWwgc2l0byB3ZWIuIA0KDQoNCiAgICAgICAgICAgIDxoMyBjbGFzcz0ncHJpbWFyeS1jb2xvcic+NC4gTW9kYWxpdMOgIGRpIHRyYXR0YW1lbnRvLCBjb211bmljYXppb25lIGUgZGlmZnVzaW9uZSBkZWkgZGF0aTwvaDM+DQogICAgICAgICAgICBJIGRhdGkgcGVyc29uYWxpIHNvbm8gdHJhdHRhdGkgZGFsIENvbXVuZSBhZG90dGFuZG8gbGUgb3Bwb3J0dW5lIG1pc3VyZSANCiAgICAgICAgICAgIGRpIHNpY3VyZXp6YSB2b2x0ZSBhZCBpbXBlZGlyZSBs4oCZYWNjZXNzbywgbGEgZGl2dWxnYXppb25lLCBsYSBtb2RpZmljYSBvIA0KICAgICAgICAgICAgbGEgZGlzdHJ1emlvbmUgbm9uIGF1dG9yaXp6YXRlIGRlaSBkYXRpIHBlcnNvbmFsaS48YnIgLz4NCiAgICAgICAgICAgIElsIHRyYXR0YW1lbnRvIHZpZW5lIGVmZmV0dHVhdG8gbWVkaWFudGUgc3RydW1lbnRpIGluZm9ybWF0aWNpIGUvbyB0ZWxlbWF0aWNpLGNvbiBtb2RhbGl0w6Agb3JnYW5penphdGl2ZSBlIGNvbiBsb2dpY2hlIHN0cmV0dGFtZW50ZSBjb3JyZWxhdGUgYWxsZSBmaW5hbGl0w6ANCiAgICAgICAgICAgIGluZGljYXRlLjxiciAvPiA8YnIgLz4NCiAgICAgICAgICAgIE9sdHJlIGFsIFRpdG9sYXJlIGRlbCB0cmF0dGFtZW50bywgaW4gYWxjdW5pIGNhc2ksIHBvdHJlYmJlcm8gYXZlcmUgDQogICAgICAgICAgICBhY2Nlc3NvIGFpIGRhdGkgc29nZ2V0dGksIGRlYml0YW1lbnRlIGRlc2lnbmF0aSwgY29pbnZvbHRpIA0KICAgICAgICAgICAgbmVsbOKAmW9yZ2FuaXp6YXppb25lIGRlbCBUaXRvbGFyZSBvdnZlcm8gc29nZ2V0dGkgZXN0ZXJuaQ0KICAgICAgICAgICAgKGNvbWUgZm9ybml0b3JpIGRpIHNlcnZpemkgdGVjbmljaSB0ZXJ6aSwgaG9zdGluZyBwcm92aWRlciwgc29jaWV0w6AgDQogICAgICAgICAgICBpbmZvcm1hdGljaGUsZWNjLikgbm9taW5hdGksIHNlIG5lY2Vzc2FyaW8sIFJlc3BvbnNhYmlsaSBkZWwgVHJhdHRhbWVudG8gDQogICAgICAgICAgICBkYSBwYXJ0ZSBkZWwgVGl0b2xhcmUuPGJyIC8+DQogICAgICAgICAgICBM4oCZZWxlbmNvIGFnZ2lvcm5hdG8gZGVpIFJlc3BvbnNhYmlsaSBwb3Ryw6Agc2VtcHJlIGVzc2VyZSByaWNoaWVzdG8gYWwgDQogICAgICAgICAgICBUaXRvbGFyZSBkZWwgVHJhdHRhbWVudG8uPGJyIC8+PGJyIC8+DQoNCiAgICAgICAgICAgIEkgZGF0aSBwZXJzb25hbGkgbm9uIHNvbm8gb2dnZXR0byBkaSBkaWZmdXNpb25lIG8gZGkgY29tdW5pY2F6aW9uZSwNCiAgICAgICAgICAgIHNhbHZvIGNvbnNlbnNvIGVzcGxpY2l0byBkZWxs4oCZaW50ZXJlc3NhdG8gZSBpIGNhc2kgaW4gY3VpIHNwZWNpZmljaGUgDQogICAgICAgICAgICBkaXNwb3NpemlvbmkgZGkgbGVnZ2UgcHJldmVkYW5vIHRhbGUgdWx0aW1hIG9wZXJhemlvbmUgDQogICAgICAgICAgICAoZXMuIGF1dG9yaXTDoCBnaXVkaXppYXJpYSkgDQogICAgDQoNCiAgICAgICAgICAgIDxoMyBjbGFzcz0ncHJpbWFyeS1jb2xvcic+IDUuIFRyYXNmZXJpbWVudG8gZGVpIGRhdGk8L2gzPiANCiAgICAgICAgICAgIEkgZGF0aSBwZXJzb25hbGkgc29ubyBjb25zZXJ2YXRpIHN1IHNlcnZlciB1YmljYXRpIGFsbOKAmWludGVybm8gDQogICAgICAgICAgICBkZWxs4oCZVW5pb25lIEV1cm9wZWEgZSBub24gc29ubyB0cmFzZmVyaXRpIGEgcGFlc2kgdGVyemkgYWxs4oCZZXN0ZXJubyANCiAgICAgICAgICAgIGRlbGzigJlVbmlvbmUgRXVyb3BlYSBvIGRlbGxvIFNwYXppbyBFY29ub21pY28gRXVyb3BlbyAoU0VFKSBvIGFkIA0KICAgICAgICAgICAgb3JnYW5penphemlvbmkgaW50ZXJuYXppb25hbGkuDQogICAgDQogICAgICAgICAgICA8aDMgY2xhc3M9J3ByaW1hcnktY29sb3InPjYuIFBlcmlvZG8gZGkgY29uc2VydmF6aW9uZSBkZWkgZGF0aSBwZXJzb25hbGk8L2gzPg0KICAgICAgICAgICAgSSBkYXRpIHBlcnNvbmFsaSBzb25vIGNvbnNlcnZhdGkgcGVyIHVuIHBlcmlvZG8gZGkgdGVtcG8gbGltaXRhdG8sIGRpdmVyc28NCiAgICAgICAgICAgIGEgc2Vjb25kYSBkZWwgdGlwbyBkaSBhdHRpdml0w6AgY2hlIHByZXZlZGUgaWwgdHJhdHRhbWVudG8gZGVpIHR1b2kgZGF0aSANCiAgICAgICAgICAgIHBlcnNvbmFsaS4gPGJyIC8+DQogICAgICAgICAgICBTY2FkdXRvIHF1ZXN0byBwZXJpb2RvLCBpIHR1b2kgZGF0aSBzYXJhbm5vIGRlZmluaXRpdmFtZW50ZSBjYW5jZWxsYXRpIA0KICAgICAgICAgICAgbyBjb211bnF1ZSByZXNpIGFub25pbWkgaW4gdmlhIGlycmV2ZXJzaWJpbGUuPGJyIC8+DQogICAgICAgICAgICBJIGRhdGkgY29uZmVyaXRpIHNwb250YW5lYW1lbnRlIGRhbGzigJl1dGVudGUgc2FyYW5ubyB0cmF0dGF0aSBwZXIgdHV0dG8gaWwgDQogICAgICAgICAgICB0ZW1wbyBuZWNlc3NhcmlvIGFsbCdlcm9nYXppb25lIGRlbGxhIHByZXN0YXppb25lIG8gZGVsIHNlcnZpemlvIGUsIA0KICAgICAgICAgICAgc3VjY2Vzc2l2YW1lbnRlDQogICAgICAgICAgICBhbGxhIGNvbmNsdXNpb25lIGRlbCBwcm9jZWRpbWVudG8gbyBkZWwgc2Vydml6aW8gZXJvZ2F0bywgaSBkYXRpIHNhcmFubm8gDQogICAgICAgICAgICBjb25zZXJ2YXRpIGluIGNvbmZvcm1pdMOgIGFsbGUgbm9ybWUgc3VsbGEgY29uc2VydmF6aW9uZSBkZWxsYSANCiAgICAgICAgICAgIGRvY3VtZW50YXppb25lIGFtbWluaXN0cmF0aXZhLjxiciAvPg0KDQogICAgICAgICAgICBQZXIgY29ub3NjZXJlIGlsIHRlbXBvIGRpIHZhbGlkaXTDoCBkZWkgY29va2llIHV0aWxpenphdGkgZGEgcXVlc3RvIHNpdG8sDQogICAgICAgICAgICBpbnZpdGlhbW8gYSBjb25zdWx0YXJlIGxhIENvb2tpZSBwb2xpY3kuPGJyIC8+DQogICAgICAgICAgICBJbiBvZ25pIGNhc28sIHBlciByYWdpb25pIHRlY25pY2hlLCBsYSBjZXNzYXppb25lIGRlbCB0cmF0dGFtZW50byBlIA0KICAgICAgICAgICAgbGEgY29uc2VndWVudGUgY2FuY2VsbGF6aW9uZSBkZWZpbml0aXZhIG8gYW5vbmltaXp6YXppb25lIGluIHZpYSANCiAgICAgICAgICAgIGlycmV2ZXJzaWJpbGUgZGVpIHJlbGF0aXZpIGRhdGkgcGVyc29uYWxpIHNhcsOgIGRlZmluaXRpdmEgZW50cm8gdHJlbnRhIA0KICAgICAgICAgICAgZ2lvcm5pIGRhaSB0ZXJtaW5pIHNvcHJhIGluZGljYXRpLg0KICAgIA0KICAgIA0KICAgICAgICAgICAgPGgzIGNsYXNzPSdwcmltYXJ5LWNvbG9yJz43LiBVbHRlcmlvcmkgaW5mb3JtYXppb25pIHN1bCB0cmF0dGFtZW50bzwvaDM+DQogICAgICAgICAgICA8Yj43LjEgRGlmZXNhIGluIGdpdWRpemlvPC9iPjxiciAvPg0KICAgICAgICAgICAgSSBkYXRpIHBlcnNvbmFsaSBkZWxs4oCZdXRlbnRlIHBvc3Nvbm8gZXNzZXJlIHV0aWxpenphdGkgcGVyIGxhIGRpZmVzYSBpbiBnaXVkaXppbyBkZWwgVGl0b2xhcmUgbyBuZWxsZSBmYXNpIHByb3BlZGV1dGljaGUgYWxsYSBzdWEgZXZlbnR1YWxlIGluc3RhdXJhemlvbmUsIGRhIGFidXNpIG5lbGwndXRpbGl6em8gZGVsbGEgc3Rlc3NhIG8gZGVpIHNlcnZpemkgY29ubmVzc2kgZGEgcGFydGUgZGVsbOKAmXV0ZW50ZS4NCiAgICAgICAgICAgIDxiciAvPjxiciAvPg0KICAgICAgICAgICAgPGI+Ny4yIEluZm9ybWF6aW9uaSBub24gY29udGVudXRlIGluIHF1ZXN0YSBwb2xpY3k8L2I+PGJyIC8+DQogICAgICAgICAgICBNYWdnaW9yaSBpbmZvcm1hemlvbmkgaW4gcmVsYXppb25lIGFsIHRyYXR0YW1lbnRvIGRlaSBkYXRpIHBlcnNvbmFsaSBwb3RyYW5ubyBlc3NlcmUgcmljaGllc3RlIGluIHF1YWxzaWFzaSBtb21lbnRvIGFsIFRpdG9sYXJlIGRlbCBUcmF0dGFtZW50byB1dGlsaXp6YW5kbyBsZSBpbmZvcm1hemlvbmkgZGkgY29udGF0dG8uDQogICAgICAgICAgICA8YnIgLz48YnIgLz4NCg0KICAgICAgICAgICAgPGI+Ny4zIENpdHTDoCBpbiBPcmRpbmU8L2I+PGJyIC8+DQogICAgICAgICAgICAnQ2l0dMOgIGluIE9yZGluZScgw6ggdW5hIHNlemlvbmUgZGVsIHNpdG8gaW50ZXJuZXQgY29tdW5hbGUgZGVkaWNhdGEgDQogICAgICAgICAgICBlc2NsdXNpdmFtZW50ZSAgYWxsZSBzZWduYWxhemlvbmkgZGVpIGNpdHRhZGluaSB2ZXJzbyBpbCBDb211bmUuIA0KICAgICAgICAgICAgSSBkYXRpIG5lY2Vzc2FyaSBwZXIgZWZmZXR0dWFyZSBsYSBzZWduYWxhemlvbmUgc29ubyBub21lIGUgY29nbm9tZQ0KICAgICAgICAgICAgZGVsbOKAmXV0ZW50ZSwgaW5kaXJpenpvIGVtYWlsIGUgaWwgdGlwbyBkaSBwcm9ibGVtYSBkYSBzZWduYWxhcmUuIA0KICAgICAgICAgICAgSW4gbWFuY2FuemEgZGkgdGFsaSBkYXRpIMOoIGltcG9zc2liaWxlIHRyYXNtZXR0ZSBsYSBzZWduYWxhemlvbmUuPGJyIC8+IA0KICAgICAgICAgICAgSW4gYWdnaXVudGEsIGzigJl1dGVudGUgcHXDsiBjYXJpY2FyZSBkZWxsZSBpbW1hZ2luaSBlIGludmlhcmUgbGENCiAgICAgICAgICAgIHByb3ByaWEgcG9zaXppb25lIGFsIENvbXVuZSB0cmFtaXRlIGxhIGZ1bnppb25lIGRpIGdlb2xvY2FsaXp6YXppb25lLiA8YnIgLz4NCiAgICAgICAgICAgIFRhbGkgZGF0aSBzb25vIGZhY29sdGF0aXZpIGUgaWwgbWFuY2F0byBjb25mZXJpbWVudG8gbm9uIHByZWdpdWRpY2EgbOKAmWludmlvIGRlbGxhIHNlZ25hbGF6aW9uZS4gDQogICAgICAgICAgICBVbmEgdm9sdGEgaW52aWF0YSBhZ2xpIHVmZmljaSwgbGEgc2VnbmFsYXppb25lIMOoDQogICAgICAgICAgICBwdWJibGljYXRhIG5lbGxhIHBhcnRlIHNvdHRvc3RhbnRlIGRlbGxhIHBhZ2luYSB3ZWIuIA0KICAgICAgICAgICAgTGUgZ2VuZXJhbGl0w6AgZGVsIHNlZ25hbGFudGUgdmVuZ29ubyBvc2N1cmF0ZSBkaSBkZWZhdWx0Lg0KICAgICAgICAgICAgPGJyIC8+IFNwdW50YW5kbyBs4oCZb3B6aW9uZSBkZWRpY2F0YSwgbOKAmXV0ZW50ZSBhY2NvbnNlbnRlIGxpYmVyYW1lbnRlIGFsbGEgcHViYmxpY2F6aW9uZQ0KICAgICAgICAgICAgZGVsbGUgcHJvcHJpZSBnZW5lcmFsaXTDoCBpbiByZWxhemlvbmUgYWxsYSBzZWduYWxhemlvbmUgZWZmZXR0dWF0YS4gDQogICAgICAgICAgICA8YnIgLz5JbCBtYW5jYXRvIGNvbnNlbnNvIGFsbGEgcHViYmxpY2F6aW9uZSBkZWxsZSBwcm9wcmllIGdlbmVyYWxpdMOgDQogICAgICAgICAgICBub24gcHJlZ2l1ZGljYSBs4oCZaW52aW8gZGVsbGEgc2VnbmFsYXppb25lLg0KICAgICAgICAgICAgPGJyIC8+PGJyIC8+DQogICAgICAgICAgICA8Yj43LjQgTG9nIGRpIHNpc3RlbWEgZSBtYW51dGVuemlvbmU8L2I+PGJyIC8+DQogICAgICAgICAgICBQZXIgbmVjZXNzaXTDoCBsZWdhdGUgYWwgZnVuemlvbmFtZW50byBlZCBhbGxhIG1hbnV0ZW56aW9uZSwgcXVlc3RvIA0KICAgICAgICAgICAgcmFjY29sZ29ubyBMb2cgZGkgc2lzdGVtYSwgb3NzaWEgZmlsZSBjaGUgcmVnaXN0cmFubyBsZSBpbnRlcmF6aW9uaQ0KICAgICAgICAgICAgZSBjaGUgcG9zc29ubyBjb250ZW5lcmUgYW5jaGUgZGF0aSBwZXJzb25hbGksIHF1YWxpIGzigJlpbmRpcml6em8gSVAuDQogICAgDQogICAgDQogICAgICAgICAgICA8aDMgY2xhc3M9J3ByaW1hcnktY29sb3InPjguIEVzZXJjaXppbyBkZWkgZGlyaXR0aSBkYSBwYXJ0ZSBkZWdsaSBVdGVudGk8L2gzPg0KICAgICAgICAgICAgSSBzb2dnZXR0aSBjdWkgc2kgcmlmZXJpc2Nvbm8gaSBkYXRpIHBlcnNvbmFsaSBoYW5ubyBpbCBkaXJpdHRvIGluIA0KICAgICAgICAgICAgcXVhbHVucXVlIG1vbWVudG8gZGkgb3R0ZW5lcmUgbGEgY29uZmVybWEgZGVsbCdlc2lzdGVuemEgDQogICAgICAgICAgICBvIG1lbm8gZGVnbGkgc3Rlc3NpIHByZXNzbyBpbCBUaXRvbGFyZSBkZWwgVHJhdHRhbWVudG8sIA0KICAgICAgICAgICAgZGkgY29ub3NjZXJuZSBpbCBjb250ZW51dG8gZSBsJ29yaWdpbmUsIGRpDQogICAgICAgICAgICB2ZXJpZmljYXJuZSBsJ2VzYXR0ZXp6YSBvIGNoaWVkZXJuZSBs4oCZaW50ZWdyYXppb25lLCANCiAgICAgICAgICAgIGxhIGNhbmNlbGxhemlvbmUsIGwnYWdnaW9ybmFtZW50bywgbGEgcmV0dGlmaWNhLCANCiAgICAgICAgICAgIGxhIHRyYXNmb3JtYXppb25lIGluIGZvcm1hIGFub25pbWEgbyBpbCBibG9jY28gZGVpIGRhdGkNCiAgICAgICAgICAgIHBlcnNvbmFsaSB0cmF0dGF0aSBpbiB2aW9sYXppb25lIGRpIGxlZ2dlLCBub25jaMOpIGRpIG9wcG9yc2kgaW4gDQogICAgICAgICAgICBvZ25pIGNhc28sIHBlciBtb3RpdmkgbGVnaXR0aW1pLCBhbCBsb3JvIHRyYXR0YW1lbnRvLg0KICAgICAgICAgICAgQWx0cmUgbyB1bHRlcmlvcmkgcmljaGllc3RlIHZhbm5vIHJpdm9sdGUgYWwgVGl0b2xhcmUgZGVsIFRyYXR0YW1lbnRvLA0KICAgICAgICAgICAgdXRpbGl6emFuZG8gbGUgaW5mb3JtYXppb25pIGRpIGNvbnRhdHRvLg0KICAgIA0KICAgIA0KICAgICAgICAgICAgPGgzIGNsYXNzPSdwcmltYXJ5LWNvbG9yJz45LiBNb2RpZmljaGU8L2gzPg0KICAgICAgICAgICAgQ2kgcmlzZXJ2aWFtbyBpbCBkaXJpdHRvIGRpIG1vZGlmaWNhcmUgcGFyemlhbG1lbnRlIG8gaW50ZWdyYWxtZW50ZSANCiAgICAgICAgICAgIGxhIHByZXNlbnRlIFByaXZhY3kgcG9saWN5IG8gc2VtcGxpY2VtZW50ZSBkaSBhZ2dpb3JuYXJuZSBpbCBjb250ZW51dG8sIA0KICAgICAgICAgICAgYWQgZXMuIGluIHNlZ3VpdG8gYSBtb2RpZmljaGUgZGkgbGVnZ2UuIA0KICAgICAgICAgICAgUGVydGFudG8sIHNpIGludml0YSBs4oCZdXRlbnRlIGEgY29uc3VsdGFyZSByZWdvbGFybWVudGUgbGEgcHJlc2VudGUgDQogICAgICAgICAgICBQcml2YWN5IHBvbGljeSBwZXIgY29ub3NjZXJuZSBs4oCZdWx0aW1hDQogICAgICAgICAgICB2ZXJzaW9uZSBhZ2dpb3JuYXRhIGluIG1vZG8gZGEgZXNzZXJlIHNlbXByZSBpbmZvcm1hdGkgY2lyY2EgaWwgbW9kbyBkaSANCiAgICAgICAgICAgIHJhY2NvbHRhIGUgdXRpbGl6em8gZGVpIGRhdGkgcGVyc29uYWxpLiA8YnIgLz4NCiAgICAgICAgICAgIDxiPlRlc3RvIGFnZ2lvcm5hdG8gaW4gZGF0YTogPC9iPjx1PjE4LzExLzIwMjE8L3U+DQogICAgICAgICAgICA8L3A+DQoNCg0KICAgIA0KICAgICAgICAgICAgPGgzIGNsYXNzPSdwcmltYXJ5LWNvbG9yJz5JbmZvcm1hdGl2YSBzdWxsJ3VzbyBkZWkgY29va2llPC9oMz4NCiAgICAgICAgICAgIDxwPjxhIG5hbWU9J3BvbGljeUNvb2tpZSc+PC9hPjwvcD4NCiAgICAgICAgICAgIFF1ZXN0YSBpbmZvcm1hdGl2YSBzdWxsJ3V0aWxpenpvIGRlaSBjb29raWUgc3VsIHNpdG8gd2ViDQogICAgICAgICAgICA8Yj4gd3d3LmNvbXVuZS5zY2FybmFmaWdpLmNuLml0PC9iPg0KICAgICAgICAgICAgw6ggcmVzYSBhbGwndXRlbnRlIGluIGF0dHVhemlvbmUgZGVsbGUgZGlzcG9zaXppb25pIGRlbGxhIGRpcmV0dGl2YSAyMDAyLzU4L0NlDQogICAgICAgICAgICAoY2QuIGRpcmV0dGl2YSBlUHJpdmFjeSkgZSBzdWNjZXNzaXZlIG1vZGlmaWNoZSwgY29tZSByZWNlcGl0YSBhbGzigJlhcnQuIDEyMiANCiAgICAgICAgICAgIGRlbCBkLmxncy4gMTk2LzAzLCBkZWwgUmVnb2xhbWVudG8gVUUgMjAxNi82NzkgKGluIHNlZ3VpdG8gR0RQUiksIHBlciBjacOyDQogICAgICAgICAgICBjaGUgY29uY2VybmUNCiAgICAgICAgICAgIHNwZWNpZmljYW1lbnRlIGxhIG5vemlvbmUgZGkgY29uc2Vuc28gZGkgY3VpIGFnbGkgYXJ0dC4gNCwgcHVudG8gMTEpIGUgNyBlIGFsDQogICAgICAgICAgICBjb25zaWRlcmFuZG8gMzIsIGNvbWUgZGEgdWx0aW1vIGludGVycHJldGF0aSBkYWxsZSBHdWlkZWxpbmVzIDA1LzIwMjAgb24gDQogICAgICAgICAgICBjb25zZW50DQogICAgICAgICAgICB1bmRlciBSZWd1bGF0aW9uIDIwMTYvNjc5IGFkb3R0YXRlIGlsIDQgbWFnZ2lvIDIwMjAuDQogICAgICAgICAgICA8YnIgLz48YnIgLz4NCiAgICAgICAgICAgIEwnaW5mb3JtYXRpdmEgw6ggcHJlZGlzcG9zdGEgZSBhZ2dpb3JuYXRhIGRhbCBDb211bmUgZGkgIA0KICAgICAgICAgICAgPGI+DQogICAgICAgICAgICAgICAgU2Nhcm5hZmlnaQ0KICAgICAgICAgICAgPC9iPiwNCiAgICAgICAgICAgIGdlc3RvcmUgZGVsIHNpdG8gd2ViIGUgVGl0b2xhcmUgZGVsIHRyYXR0YW1lbnRvIGRpIGRhdGkgcGVyc29uYWxpIGENCiAgICAgICAgICAgIGVzc28gY29ubmVzc28sIGNvbiBzZWRlIGluIA0KICAgICAgICAgICAgPGI+IA0KICAgICAgICAgICAgICAgIHd3dy5jb211bmUuc2Nhcm5hZmlnaS5jbi5pdA0KICAgICAgICAgICAgPC9iPg0KICAgICAgICAgICAgLCBQLklWQSANCiAgICAgICAgICAgIDxiPg0KICAgICAgICAgICAgMDA0NzUzNTAwNDcNCiAgICAgICAgICAgIDwvYj4NCiAgICAgICAgICAgIDxiciAvPjxiciAvPg0KICAgICAgICAgICAgRXZlbnR1YWxpIHJpY2hpZXN0ZSBjaXJjYSBsJ3V0aWxpenpvIGRlaSBjb29raWUgbmVsIHByZXNlbnRlIHNpdG8gd2ViIA0KICAgICAgICAgICAgcHXDsiBlc3NlcmUNCiAgICAgICAgICAgIGludmlhdGEgYWxsJ2luZGlyaXp6byBlbWFpbCANCiAgICAgICAgICAgIDxiPg0KICAgICAgICAgICAgICAgIHNlZ3JldGVyaWFAY29tdW5lLnNjYXJuYWZpZ2kuY24uaXQNCiAgICAgICAgICAgIDwvYj4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgUHVvaSB1dGlsaXp6YXJlIGxvIHN0ZXNzbyBpbmRpcml6em8gcGVyIGVzZXJjaXRhcmUsDQogICAgICAgICAgICBpbiBxdWFsc2lhc2kgbW9tZW50bywgaSBkaXJpdHRpIGNoZSBpbCBHRFBSIHRpIGF0dHJpYnVpc2NlIGluIHF1YWxpdMOgDQogICAgICAgICAgICBkaSBpbnRlcmVzc2F0byAoYXJ0dC4gMTUgZSBzcy4gZGVsIEdEUFI6IGFkIGVzZW1waW8sIGFjY2Vzc28gYWkgcHJvcHJpIGRhdGksDQogICAgICAgICAgICBjYW5jZWxsYXppb25lLCBhZ2dpb3JuYW1lbnRvLCByZXR0aWZpY2EsIGludGVncmF6aW9uZSwgZWNjLikuDQogICAgICAgICAgICBSaWNvcnJlbmRvbmUgaSBwcmVzdXBwb3N0aSwgcG90cmFpIGFuY2hlIGZhcmUgcmVjbGFtbyBhbGzigJlBdXRvcml0w6AgZGkNCiAgICAgICAgICAgIGNvbnRyb2xsbyAoR2FyYW50ZSBwZXIgbGEgcHJvdGV6aW9uZSBkZWkgZGF0aSBwZXJzb25hbGkpLg0KICAgICAgICAgICAgPGJyIC8+PGJyIC8+DQoNCiAgICAgICAgICAgIDxiPkNIRSBDT1NBIFNPTk8gSSBDT09LSUU/PC9iPjxiciAvPg0KICAgICAgICAgICAgSSBjb29raWUgc29ubyBzdHJpbmdoZSBkaSB0ZXN0byBkaSBwaWNjb2xhIGRpbWVuc2lvbmUgY2hlIGlsIHNpdG8gd2ViIGRhIHRlDQogICAgICAgICAgICB2aXNpdGF0byBvdnZlcm8gdGVyemUgcGFydGkgcG9zaXppb25hbm8gZWQgYXJjaGl2aWFubyBuZWwgdHVvIGRpc3Bvc2l0aXZvIA0KICAgICAgICAgICAgKHNpYSBlc3NvIHVuIFBDLCBzbWFydHBob25lLCB0YWJsZXQsIGRpc3Bvc2l0aXZvIElvVCwuLi4pLiA8YnIgLz48YnIgLz4NCiAgICAgICAgICAgIElsIGJyb3dzZXIgY29uIGN1aSAgZWZmZXR0dWkgbGEgbmF2aWdhemlvbmUgcHXDsiBtZW1vcml6emFyZSBpIGNvb2tpZSBlIHBvaSANCiAgICAgICAgICAgIHRyYXNtZXR0ZXJsaSBudW92YW1lbnRlIGFsIHNpdG8gY2hlIGxpIGhhIGdlbmVyYXRpIGluIG9jY2FzaW9uZSBkaSB1bmEgDQogICAgICAgICAgICBzdWNjZXNzaXZhIA0KICAgICAgICAgICAgdmlzaXRhLCBtYW50ZW5lbmRvIGNvc8OsIG1lbW9yaWEgZGVsbGEgdHVhIHByZWNlZGVudGUgaW50ZXJhemlvbmUuIA0KICAgICAgICAgICAgTGUgaW5mb3JtYXppb25pIGNvZGlmaWNhdGUgbmVpIGNvb2tpZSBwb3Nzb25vIGluY2x1ZGVyZSBkYXRpIHBlcnNvbmFsaSwgDQogICAgICAgICAgICBjb21lIGluZGlyaXp6byBJUCwgbm9tZSB1dGVudGUsIGlkZW50aWZpY2F0aXZvIHVuaXZvY28gbyBpbmRpcml6em8gZS1tYWlsLA0KICAgICAgICAgICAgbWEgcG9zc29ubyBhbmNoZSBjb250ZW5lcmUgZGF0aSBub24gcGVyc29uYWxpLCBjb21lIGxlIGltcG9zdGF6aW9uaSBkZWxsYSANCiAgICAgICAgICAgIGxpbmd1YSBvIGluZm9ybWF6aW9uaSBzdWwgdGlwbyBkaSBkaXNwb3NpdGl2byB1dGlsaXp6YXRvLg0KICAgICAgICAgICAgPGJyIC8+PGJyIC8+DQoNCg0KICAgICAgICAgICAgSSBjb29raWUgc2kgcG9zc29ubyBkaXZpZGVyZSBpbiBkdWUgbWFjcm8tY2F0ZWdvcmllIGluIGJhc2UgYWxsYSBmaW5hbGl0w6A6DQogICAgICAgICAgICA8dWwgPg0KICAgICAgICAgICAgICAgIDxsaT5Db29raWUgdGVjbmljaS4gSSBjb29raWUgdGVjbmljaSBzb25vIG5lY2Vzc2FyaSBwZXIgaWwgY29ycmV0dG8gZnVuemlvbmFtZW50byBkZWwgc2l0byB3ZWIgZSBwZXIgcGVybWV0dGVyZSBsYSBuYXZpZ2F6aW9uZTsgc2VuemEgZGkgZXNzaSBhbGN1bmUgcGFnaW5lIHBvc3Nvbm8gbm9uIGVzc2VyZSB2aXN1YWxpenphdGUgY29ycmV0dGFtZW50ZSBvcHB1cmUgcHXDsiBlc3NlcmUgaW1wb3NzaWJpbGUgdXRpbGl6emFyZSBhbGN1bmkgc2Vydml6aSBkZWwgc2l0by4gUGVyIGVzZW1waW8sIHVuIGNvb2tpZSB0ZWNuaWNvIMOoIGluZGlzcGVuc2FiaWxlIHBlciBtYW50ZW5lcmUgbCd1dGVudGUgY29sbGVnYXRvIGR1cmFudGUgdHV0dGEgbGEgdmlzaXRhIGEgdW4gc2l0byB3ZWIgKGMuZC4gY29va2llIGRpIG5hdmlnYXppb25lIG8gZGkgc2Vzc2lvbmUpLCBvcHB1cmUgcGVyIG1lbW9yaXp6YXJlIGxlIGltcG9zdGF6aW9uaSBkZWxsYSBsaW5ndWEsIGRlbGxhIHZpc3VhbGl6emF6aW9uZSwgZSBjb3PDrCB2aWEuIEzigJlpbnN0YWxsYXppb25lIGRpIHF1ZXN0aSBjb29raWUgw6ggYXV0b21hdGljYSBhbCBtb21lbnRvIGRlbGzigJlhY2Nlc3NvIGFsIHNpdG8gd2ViIGUgcGVyY2jDqSBjacOyIGF2dmVuZ2EgTk9OIMOoIHJpY2hpZXN0byBpbCBjb25zZW5zbyBkZWxs4oCZdXRlbnRlLjwvbGk+DQogICAgICAgICAgICAgICAgPGxpPkNvb2tpZSBhbmFsaXRpY2kuIEkgY29va2llIGFuYWxpdGljaSBzb25vIHV0aWxpenphdGkgcGVyIHZhbHV0YXJlIGzigJllZmZpY2FjaWEgZGVsIHNpdG8gd2ViIG8gcGVyIGNvbnRyaWJ1aXJlIGEgbWlzdXJhcm5lIGlsIOKAnHRyYWZmaWNv4oCdLCBjaW/DqCBpbCBudW1lcm8gZGkgdmlzaXRhdG9yaSByaXBhcnRpdGkgcGVyIGFyZWEgZ2VvZ3JhZmljYSwgZmFzY2lhIG9yYXJpYSBkZWxsYSBjb25uZXNzaW9uZSBvIGFsdHJlIGNhcmF0dGVyaXN0aWNoZS4gUGVyIGkgY29va2llIGFuYWxpdGljaSBkaSBwcmltYSBwYXJ0ZSBvIGRpIHRlcnphIHBhcnRlIGFub25pbWl6emF0aSBOT04gw6ggcmljaGllc3RvIGlsIGNvbnNlbnNvIGRlbGzigJl1dGVudGUuIE5vbiByaWVudHJhbm8gaW4gcXVlc3RhIGNhdGVnb3JpYSBpIGNvb2tpZSBhbmFsaXRpY2kgZGkgdGVyemEgcGFydGUgbm9uIGFub25pbWl6emF0aSwgcGVyIGkgcXVhbGkgw6ggc2VtcHJlIG5lY2Vzc2FyaW8gYWNxdWlzaXJlIGlsIGNvbnNlbnNvIGRlbGzigJl1dGVudGUuPC9saT4NCiAgICAgICAgICAgICAgICA8bGk+Q29va2llIGRpIHByb2ZpbGF6aW9uZS4gSSBjb29raWUgZGkgcHJvZmlsYXppb25lIHZlbmdvbm8gdXRpbGl6emF0aSBhbCBmaW5lIGRpIGludmlhcmUgbWVzc2FnZ2kgcHViYmxpY2l0YXJpIGluIGxpbmVhIGNvbiBsZSBwcmVmZXJlbnplIG1hbmlmZXN0YXRlIGRhbGzigJl1dGVudGUgZHVyYW50ZSBsYSBzdWEgbmF2aWdhemlvbmUgZSBwb3Nzb25vIGVzc2VyZSB1dGlsaXp6YXRpIHNvbG8gcHJldmlvIGNvbnNlbnNvLjwvbGk+DQogICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgPGJyIC8+PGJyIC8+DQogICAgICAgICAgICAgICAgUG9zc2lhbW8sIGlub2x0cmUsIHN1ZGRpdmlkZXJlIGkgY29va2llIGluIGJhc2UgYWkgc29nZ2V0dGkgY29pbnZvbHRpIGluOjxiciAvPg0KICAgICAgICAgICAgICAgIDx1bCA+DQogICAgICAgICAgICAgICAgICAgIDxsaT5Db29raWUgZGlyZXR0aSBvIGRpIHByaW1hIHBhcnRlLiBTaSB0cmF0dGEgZGkgY29va2llIHRyYXNtZXNzaSBkaXJldHRhbWVudGUgZGFsIGdlc3RvcmUgZGVsIHNpdG8gY2hlIGzigJl1dGVudGUgc3RhIHZpc2l0YW5kby48L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+Q29va2llIGRpIHRlcnplIHBhcnRpLiBTaSB0cmF0dGEgZGkgY29va2llIGluc3RhbGxhdGkgZGEgdW4gc2l0byBkaXZlcnNvIHBlciB0cmFtaXRlIGRlbCBwcmltby48L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQoJCQkJSSBkYXRpIGRpIG5hdmlnYXppb25lIG5vbiBwZXJzaXN0b25vIHBlciBwacO5IGRpIHNldHRlIGdpb3JuaSBlIHZlbmdvbm8gY2FuY2VsbGF0aSBpbW1lZGlhdGFtZW50ZSBkb3BvIGxhIGxvcm8gYWdncmVnYXppb25lDQogICAgDQogICAgICAgICAgICA8YnIgLz4gPGJyIC8+IA0KCQkJDQoJCQk8aDM+Q29va2llIHRlY25pY2k8L2gzPg0KCQkJPGRpdiBjbGFzcz0ndGFibGUtcmVzcG9uc2l2ZScgc3R5bGU9J3dpZHRoOiA3MHZ3Jz4NCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9J3RhYmxlJz4NCiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0nY29sJz5Ob21lPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9J2NvbCc+RG9taW5pbzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdjb2wnPlNjYWRlbnphPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9J2NvbCc+VGlwbzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdjb2wnPkNhdGVnb3JpYTwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdjb2wnPlNjb3BvPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+DQogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0ncm93Jz5jY19jb29raWU8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD53d3cuY29tdW5lLnNjYXJuYWZpZ2kuY24uaXQ8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD43IGdpb3JuaTwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlRlY25pY288L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5QcmltYSBwYXJ0ZTwvdGQ+DQoJCQkJCQkJPHRkPlZpZW5lIHV0aWxpenphdG8gcGVyIG1lbW9yaXp6YXJlIGxhIHNjZWx0YSBkZWxsJ3V0ZW50ZSByaWd1YXJkbyBsJ2FjY2V0dGF6aW9uZSBkZWkgY29va2llIHN1bCBzaXRvIHdlYi48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9J3Jvdyc+QVNQLk5FVF9TZXNzaW9uSWQ8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD53d3cuY29tdW5lLnNjYXJuYWZpZ2kuY24uaXQ8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5EdXJhdGEgU2Vzc2lvbmU8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5UZWNuaWNvPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1hIHBhcnRlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCgkJCQkJCQk8dGQ+VmllbmUgdXRpbGl6emF0byBwZXIgaWRlbnRpZmljYXJlIGluIG1vZG8gdW5pdm9jbyBsYSBzZXNzaW9uZSBkZWxsJ3V0ZW50ZSBzdWwgc2VydmVyLjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KICAgICAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8L2Rpdj4NCgkJCTxicj4NCgkJCTxoMz5Db29raWUgZGkgdGVyemUgcGFydGk8L2gzPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ndGFibGUtcmVzcG9uc2l2ZScgc3R5bGU9J3dpZHRoOiA3MHZ3Jz4NCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9J3RhYmxlJz4NCiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0nY29sJz5Ob21lPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9J2NvbCc+RG9taW5pbzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdjb2wnPlNjYWRlbnphPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9J2NvbCc+VGlwbzwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdjb2wnPkNhdGVnb3JpYTwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdjb2wnPlNjb3BvPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+DQogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0ncm93Jz5fcGtfaWQ8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD53d3cubWF0b21vLm9yZzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjEzIE1lc2k8L3RkPg0KCQkJCQkJCTx0ZD5JZGVudGlmaWNhemlvbmU8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5UZXJ6ZSBQYXJ0aTwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlV0aWxpenphdG8gcGVyIG1lbW9yaXp6YXJlIHVuIEd1aWQgKGNvZGljZSByYW5kb20gYXV0b2dlbmVyYXRvKSBwZXIgaWRlbnRpZmljYXJlIGwndXRlbnRlIGNvbiB1biBJRCB2aXNpdGF0b3JlIHVuaWNvPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPSdyb3cnPl9wa19yZWY8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD53d3cubWF0b21vLm9yZzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjYgTWVzaTwvdGQ+DQoJCQkJCQkJPHRkPlRyYWNjaWFtZW50bzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlRlcnplIFBhcnRpPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpenphdG8gcGVyIG1lbW9yaXp6YXJlIGxlIGluZm9ybWF6aW9uaSBkaSBhdHRyaWJ1emlvbmUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlsIHJlZmVycmVyIGluaXppYWxtZW50ZSB1dGlsaXp6YXRvIHBlciB2aXNpdGFyZSBpbCBzaXRvIHdlYg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT0ncm93Jz5fcGtfc2VzPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+d3d3Lm1hdG9tby5vcmc8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4zMCBNaW51dGk8L3RkPg0KCQkJCQkJCTx0ZD5TZXNzaW9uZTwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlRlcnplIFBhcnRpPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Q29va2llIGRpIGJyZXZlIGR1cmF0YSB1dGlsaXp6YXRpIHBlciBtZW1vcml6emFyZSB0ZW1wb3JhbmVhbWVudGUgaSBkYXRpIHBlciBsYSB2aXNpdGE8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCiAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8cD4NCiAgICAgICAgICAgIDxiciAvPjxiciAvPiANCg0KICAgICAgICAgICAgPGI+IFFVQU5ETyBFIENPTUUgw4kgUklDSElFU1RPIElMIENPTlNFTlNPIERFTEzigJlVVEVOVEU/PC9iPjxiciAvPg0KICAgICAgICAgICAgICAgIFBlciBs4oCZaW5zdGFsbGF6aW9uZSBkZWkgY29va2llIHRlY25pY2kgbm9uIMOoIG5lY2Vzc2FyaW8gaWwgY29uc2Vuc28gZGVsbOKAmXV0ZW50ZS48YnIgLz4NCiAgICAgICAgICAgICAgICBOb24gc29ubyBwcmVzZW50aSBkZWkgY29va2llIGRpIHByb2ZpbGF6aW9uZSBlIGFuYWxpdGljaSBub24gYW5vbmltaXp6YXRpLjxiciAvPg0KICAgICAgICAgICAgICAgIFBlciBs4oCZaW5zdGFsbGF6aW9uZSBkZWkgY29va2llIGRpIHByb2ZpbGF6aW9uZSBlIGFuYWxpdGljaSBub24gYW5vbmltaXp6YXRpIA0KICAgICAgICAgICAgICAgIMOoLCBpbnZlY2UsIG5lY2Vzc2FyaW8gaWwgY29uc2Vuc28gcHJldmVudGl2by48YnIgLz4NCiAgICAgICAgICAgICAgICBQZXIgcXVlc3RvLCBhbCBwcmltbyBhY2Nlc3NvIGFsbGEgaG9tZSBwYWdlIChvIGFsdHJhIHBhZ2luYSkgZGVsIG5vc3RybyBzaXRvIA0KICAgICAgICAgICAgICAgIMOoIHByb3Bvc3RvIHVuIGFwcG9zaXRvIGJhbm5lciBhdHRyYXZlcnNvIGlsIHF1YWxlIGzigJl1dGVudGUgcG90csOgIGVzcHJpbWVyZSBpbCANCiAgICAgICAgICAgICAgICBwcm9wcmlvIGNvbnNlbnNvLiANCiAgICAgICAgICAgIDwvcD4NCg0KICAgICAgICAgICAgPHA+DQogICAgICAgICAgICA8Yj5BVFRJVkFaSU9ORSBFIERJU0FUVElWQVpJT05FIERFSSBDT09LSUU8L2I+PGJyIC8+DQogICAgICAgICAgICBJbiBxdWFsc2lhc2kgbW9tZW50byDDqCBwb3NzaWJpbGUgY29sbGVnYXJzaSBhbGzigJlhcmVhIGRlZGljYXRhIHBlciBtb2RpZmljYXJlDQogICAgICAgICAgICBsZSBwcmVmZXJlbnplIHN1aSBjb29raWUsIGJsb2NjYXJlIG8gZWxpbWluYXJlIGkgY29va2llIGRhbCBwcm9wcmlvIGRpc3Bvc2l0aXZvLg0KICAgICAgICAgICAgUGVyIGJsb2NjYXJlIG8gZWxpbWluYXJlIGkgY29va2llIGRhbCBwcm9wcmlvIGRpc3Bvc2l0aXZvIMOoIG5lY2Vzc2FyaW8gZmFyZQ0KICAgICAgICAgICAgcmlmZXJpbWVudG8gYWxsZSBpc3RydXppb25pIGZvcm5pdGUgZGFsIGJyb3dzZXIgSW50ZXJuZXQgdXRpbGl6emF0by4gPGJyIC8+DQogICAgICAgICAgICBJIGxpbmsgcXVpIGRpIHNlZ3VpdG8gaWxsdXN0cmFubyBjb21lIGZhcmUgcGVyIGRpc2F0dGl2YXJlIGkgY29va2llDQogICAgICAgICAgICBkYWkgYnJvd3NlciBwacO5IGRpZmZ1c2kuPGJyIC8+ICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0naHR0cDovL3dpbmRvd3MubWljcm9zb2Z0LmNvbS9pdC1JVC93aW5kb3dzLXZpc3RhL0Jsb2NrLW9yLWFsbG93LWNvb2tpZXMnIHRhcmdldD0nX2JsYW5rJz4gSW50ZXJuZXQgRXhwbG9yZXImdHJhZGU7PC9hPiA8YnIgLz4NCiAgICAgICAgICAgIDxhIGhyZWY9J2h0dHA6Ly93d3cuYXBwbGUuY29tL2l0L3N1cHBvcnQvJyB0YXJnZXQ9J19ibGFuayc+IFNhZmFyaSZ0cmFkZTs8L2E+IDxiciAvPg0KICAgICAgICAgICAgPGEgaHJlZj0naHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vY2hyb21lL2Fuc3dlci85NTY0Nz9obD1pdCZobHJtPWVuJyB0YXJnZXQ9J19ibGFuayc+Q2hyb21lJnRyYWRlOzwvYT4gPGJyIC8+DQogICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vc3VwcG9ydC5tb3ppbGxhLm9yZy9pdC9rYi9BdHRpdmFyZSUyMGUlMjBkaXNhdHRpdmFyZSUyMGklMjBjb29raWUnIHRhcmdldD0nX2JsYW5rJz5GaXJlZm94JnRyYWRlOzwvYT4gPGJyIC8+DQogICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vaGVscC5vcGVyYS5jb20vV2luZG93cy8xMC4yMC9pdC9jb29raWVzLmh0bWwnPk9wZXJhJnRyYWRlOzwvYT4NCiAgICAgICAgICAgIDxiciAvPjxiciAvPg0KICAgICAgICAgICAgUGVyIHVsdGVyaW9yaSBpbmZvcm1hemlvbmkgc3VsbOKAmXVzbyBkZWkgY29va2llIHNpIHZlZGEgaWwgc2l0bw0KICAgICAgICAgICAgPGEgaHJlZj0naHR0cHM6Ly93d3cuYWxsYWJvdXRjb29raWVzLm9yZycgdGFyZ2V0PSdfYmxhbmsnPnd3dy5hbGxhYm91dGNvb2tpZXMub3JnPC9hPjxiciAvPg0KICAgICAgICAgICAgUGVyIHVsdGVyaW9yaSBpbmZvcm1hemlvbmkgc3VsIHRyYXR0YW1lbnRvIGRlaSBkYXRpIHBlcnNvbmFsaSBlZmZldHR1YXRvDQogICAgICAgICAgICBhdHRyYXZlcnNvIHF1ZXN0byBzaXRvIHNpIHZlZGEgIA0KICAgICAgICAgICAgPGEgaHJlZj0nL3ByaXZhY3knPnd3dy5jb211bmUuc2Nhcm5hZmlnaS5jbi5pdDwvYT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICBkAhEPFgIeBXN0eWxlBccBYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb3ZlciAhaW1wb3J0YW50O2JhY2tncm91bmQ6DQoJCQkJCQlsaW5lYXItZ3JhZGllbnQoDQoJCQkJCQkgIHJnYmEoMCwgMCwgMCwgMC4yKSwgDQoJCQkJCQkgIHJnYmEoMCwgMCwgMCwgMC4yKQ0KCQkJCQkJKSwgdXJsKCcvY2dpLWJpbi90ZXN0YXRlL2ltZzEud2VicCcpOxYCZg8WAh8FBRR0ZWw6MDE3NS43NDEwMS03NDQwMhYCAgEPFgIfAwUhQ2hpYW1hIGlsIG51bWVybyAwMTc1Ljc0MTAxLTc0NDAyZAISDxYCHwMFjwwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvc2Vydml6aW8vMTUvQWdyaWNvbHR1cmEgZSBwZXNjYSc+QWdyaWNvbHR1cmEgZSBwZXNjYTwvYT4NCgkJCTwvbGk+PGxpPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9zZXJ2aXppby8xMS9BbWJpZW50ZSc+QW1iaWVudGU8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvc2Vydml6aW8vNi9BbmFncmFmZSBlIHN0YXRvIGNpdmlsZSc+QW5hZ3JhZmUgZSBzdGF0byBjaXZpbGU8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvc2Vydml6aW8vMTQvQXBwYWx0aSBwdWJibGljaSc+QXBwYWx0aSBwdWJibGljaTwvYT4NCgkJCTwvbGk+PGxpPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9zZXJ2aXppby8xMy9BdXRvcml6emF6aW9uaSc+QXV0b3Jpenphemlvbmk8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvc2Vydml6aW8vNS9DYXRhc3RvIGUgdXJiYW5pc3RpY2EnPkNhdGFzdG8gZSB1cmJhbmlzdGljYTwvYT4NCgkJCTwvbGk+PGxpPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9zZXJ2aXppby8xMC9DdWx0dXJhIGUgdGVtcG8gbGliZXJvJz5DdWx0dXJhIGUgdGVtcG8gbGliZXJvPC9hPg0KCQkJPC9saT48bGk+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0nL3NlcnZpemlvLzEvRWR1Y2F6aW9uZSBlIGZvcm1hemlvbmUnPkVkdWNhemlvbmUgZSBmb3JtYXppb25lPC9hPg0KCQkJPC9saT48bGk+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0nL3NlcnZpemlvLzgvR2l1c3RpemlhIGUgc2ljdXJlenphIHB1YmJsaWNhJz5HaXVzdGl6aWEgZSBzaWN1cmV6emEgcHViYmxpY2E8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvc2Vydml6aW8vMTIvSW1wcmVzZSBlIGNvbW1lcmNpbyc+SW1wcmVzZSBlIGNvbW1lcmNpbzwvYT4NCgkJCTwvbGk+PGxpPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9zZXJ2aXppby80L01vYmlsaXTDoCBlIHRyYXNwb3J0aSc+TW9iaWxpdMOgIGUgdHJhc3BvcnRpPC9hPg0KCQkJPC9saT48bGk+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0nL3NlcnZpemlvLzIvU2FsdXRlLCBiZW5lc3NlcmUgZSBhc3Npc3RlbnphJz5TYWx1dGUsIGJlbmVzc2VyZSBlIGFzc2lzdGVuemE8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvc2Vydml6aW8vOS9UcmlidXRpLCBmaW5hbnplIGUgY29udHJhdnZlbnppb25pJz5UcmlidXRpLCBmaW5hbnplIGUgY29udHJhdnZlbnppb25pPC9hPg0KCQkJPC9saT48bGk+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0nL3NlcnZpemlvLzcvVHVyaXNtbyc+VHVyaXNtbzwvYT4NCgkJCTwvbGk+PGxpPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9zZXJ2aXppby8zL1ZpdGEgbGF2b3JhdGl2YSc+Vml0YSBsYXZvcmF0aXZhPC9hPg0KCQkJPC9saT5kAhMPFgIfAwXwAg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9ub3ZpdGEvY2F0ZWdvcmlhLzE4L05vdGl6aWUnPk5vdGl6aWU8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvbm92aXRhL2NhdGVnb3JpYS8yMC9NRSBQQcOsUyc+TWUgcGHDrHM8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvbm92aXRhL2NhdGVnb3JpYS8xNDYvQXZ2aXNpJz5BdnZpc2k8L2E+DQoJCQk8L2xpPjxsaT4NCiAgICAgICAgICAgICAgICA8YSBocmVmPScvbm92aXRhL2NhdGVnb3JpYS8xNDcvQ29tdW5pY2F0aSc+Q29tdW5pY2F0aTwvYT4NCgkJCTwvbGk+ZAIVDxYCHwMFlwgNCiAgICAgICAgICAgICAgICBDb3JzbyBDYXJsbyBBbGJlcnRvLCAxIC0gMTIwMzAgU2Nhcm5hZmlnaSAoQ04pPGJyIC8+DQogICAgICAgICAgICAgICAgVGVsOiA8YSBocmVmPSd0ZWw6MDE3NS43NDEwMS03NDQwMic+MDE3NS43NDEwMS03NDQwMjwvYT48YnIgLz4NCiAgICAgICAgICAgICAgICBGYXg6IDxhIGhyZWY9J2ZheDowMTc1Ljc0NjE5Jz4wMTc1Ljc0NjE5PC9hPjxiciAvPg0KICAgICAgICAgICAgICAgIENvZGljZSBGaXNjYWxlOiA8c3Ryb25nPjg1MDAyMDUwMDQ2PC9zdHJvbmc+PGJyIC8+DQogICAgICAgICAgICAgICAgUGFydGl0YSBJVkE6IDxzdHJvbmc+MDA0NzUzNTAwNDc8L3N0cm9uZz48YnIgLz4NCiAgICAgICAgICAgICAgICBQLkUuQy46IDxhIGhyZWY9J21haWx0bzpzY2FybmFmaWdpQHBlYy5jb211bmUuc2Nhcm5hZmlnaS5jbi5pdCcgdGl0bGU9J3BlYyBub21lIGNvbXVuZSc+c2Nhcm5hZmlnaUBwZWMuY29tdW5lLnNjYXJuYWZpZ2kuY24uaXQ8L2E+PGJyIC8+DQogICAgICAgICAgICAgICAgRW1haWw6IDxhIGhyZWY9J21haWx0bzpzZWdyZXRlcmlhQGNvbXVuZS5zY2FybmFmaWdpLmNuLml0JyB0aXRsZT0nZW1haWwgbm9tZSBjb211bmUnPnNlZ3JldGVyaWFAY29tdW5lLnNjYXJuYWZpZ2kuY24uaXQ8L2E+PGJyIC8+DQogICAgICAgICAgICAgICAgRmF0dHVyYXppb25lIEVsZXR0cm9uaWNhOiA8c3Ryb25nPlVGV09JMjwvc3Ryb25nPjxiciAvPg0KICAgICAgICAgICAgICAgIENvZGljZSBJUEE6IDxzdHJvbmc+Y19pNTEyPC9zdHJvbmc+PGJyIC8+DQogICAgICAgICAgICAgICAgSUJBTiAocGVyIGkgdm9zdHJpIGJvbmlmaWNpIGJhbmNhcmkpOjxiciAvPjxzdHJvbmc+Q29udG8gQmFuY2EgZCdJdGFsaWE6IDMwMDQ5MTxicj5Db250byBkaSBUZXNvcmVyaWEgSUJBTjo8YnI+SVQ1MVIwNTM4NzQ2NzcwMDAwMDM4MDEyMTYwPC9zdHJvbmc+PGJyIC8+DQogICAgICAgICAgICAgICAgQ29udG8gQ29ycmVudGUgUG9zdGFsZTo8YnIgLz48c3Ryb25nPjE1ODc4MTI3PC9zdHJvbmc+PGJyIC8+DQogICAgICAgICAgICBkAhYPFgIfAwXXCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBDb2RpY2UgSVNUQVQ6IDxzdHJvbmc+MDA0MjE3PC9zdHJvbmc+ICZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgICAgICAgICAgICBDb2RpY2UgQ2F0YXN0YWxlOiA8c3Ryb25nPkk1MTI8L3N0cm9uZz48YnIgLz4NCiAgICAgICAgICAgICAgICBBYml0YW50aTogPHN0cm9uZz4yLjEwMiBhbCAzMS4xMi4yMDIzPC9zdHJvbmc+ICZuYnNwOyZuYnNwOyZuYnNwOyANCiAgICAgICAgICAgICAgICBEZW5vbWluYXppb25lOiA8c3Ryb25nPlNjYXJuYWZpZ2VzaTwvc3Ryb25nPjxiciAvPg0KICAgICAgICAgICAgICAgIFN1cGVyZmljaWU6IDxzdHJvbmc+MzAsNDE8L3N0cm9uZz4gS21xLiAmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICAgICAgICAgICAgRGVuc2l0w6A6IDxzdHJvbmc+Njk8L3N0cm9uZz4gKGFiL2ttcS4pPGJyIC8+DQogICAgICAgICAgICAgICAgU2FudG8gcGF0cm9ubzogPHN0cm9uZz5Db3JwaSBTYW50aSAtIHVsdGltYSBkb21lbmljYSBkaSBzZXR0ZW1icmU8L3N0cm9uZz48YnIgLz4NCiAgICAgICAgICAgICAgICBBbHRpdHVkaW5lIG1lZGlhOiA8c3Ryb25nPjI5Njwvc3Ryb25nPiBtLnMubC5tLjxiciAvPg0KICAgICAgICAgICAgICAgIExhdGl0dWRpbmU6IDxzdHJvbmc+NDTCsCA0MCcgNTQnJzwvc3Ryb25nPiAmbmJzcDsmbmJzcDsmbmJzcDsgDQogICAgICAgICAgICAgICAgTG9uZ2l0dWRpbmU6IDxzdHJvbmc+N8KwIDMzJyA1OScnPC9zdHJvbmc+PGJyIC8+DQogICAgICAgICAgICAgICAgQ29tdW5pIGxpbWl0cm9maTogPHN0cm9uZz5TYWx1enpvLCBMYWduYXNjbywgU2F2aWdsaWFubywgTW9uYXN0ZXJvbG8gZGkgU2F2aWdsaWFubywgUnVmZmlhLCBWaWxsYW5vdmEgU29sYXJvLCBUb3JyZSBTYW4gR2lvcmdpbzwvc3Ryb25nPjxiciAvPg0KICAgICAgICAgICAgICAgIEZyYXppb25pIGUgYm9yZ2F0ZTogPHN0cm9uZz5Gb3JuYWNhLCBMYSBHcmFuZ2lhPC9zdHJvbmc+PGJyIC8+PGJyIC8+DQogICAgICAgICAgICAgICAgPHN0cm9uZz5SZXNwb25zYWJpbGUgZGVsbGEgcHJvdGV6aW9uZSBkZWkgZGF0aSAoRC5QLk8uKTwvc3Ryb25nPjxiciAvPg0KICAgICAgICAgICAgICAgIEVtYWlsOiA8YSBocmVmPSdtYWlsdG86ZHBvQGFlc3Nlc2Vydml6aS5ldScgdGl0bGU9J3BlYyBkcG8nPmRwb0BhZXNzZXNlcnZpemkuZXU8L2E+PGJyIC8+DQogICAgICAgICAgICAgICAgUGVjOiA8YSBocmVmPSdtYWlsdG86c2VncmV0ZXJpYUBwZWMuYWVzc2VzZXJ2aXppLmV1JyB0aXRsZT0ncGVjIGxlZ2FsbWFpbCc+c2VncmV0ZXJpYUBwZWMuYWVzc2VzZXJ2aXppLmV1PC9hPjxiciAvPg0KICAgICAgICAgICAgZAIXD2QWBGYPFgIfAwWkATxhIGhyZWY9J2h0dHBzOi8vZm9ybS5hZ2lkLmdvdi5pdC92aWV3LzU4MGU3OGVlLTY1Y2EtNGYxMC04Yjc5LWRkNTM1OTIxMDgzZC8nICBkYXRhLWVsZW1lbnQ9J2FjY2Vzc2liaWxpdHktbGluaycgdGFyZ2V0PSdfYmxhbmsnPkRpY2hpYXJhemlvbmUgZGkgYWNjZXNzaWJpbGl0w6A8L2E+ZAIBDxYCHwUFHS9jZ2ktYmluL2FyY2hpdmlvL3N0YXR1dG8ucGRmZAIYDxYCHwMFjBMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ndGV4dC10cnVuY2F0ZSc+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0naHR0cDovL3d3dy5jYXNhZGlyaXBvc29yZWdpbmFkZWxsYXBhY2UuaXQvaG9tZS8nIHRhcmdldD0nX2JsYW5rJz5DYXNhIGRpIFJpcG9zbyBSZWdpbmEgZGVsbGEgUGFjZTwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LnZpc2l0bW92ZS5pdC8nIHRhcmdldD0nX2JsYW5rJz5WaXNpdE1PVkVfTW9udmlzb09jY2l0YW5WYWxsZXlzRXVyb3BlPC9hPg0KCQkJPC9saT48bGkgY2xhc3M9J3RleHQtdHJ1bmNhdGUnPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9J2h0dHBzOi8vd3d3LnZpc2l0Y3VuZWVzZS5pdC8nIHRhcmdldD0nX2JsYW5rJz5WSVNJVCBDVU5FRVNFPC9hPg0KCQkJPC9saT48bGkgY2xhc3M9J3RleHQtdHJ1bmNhdGUnPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9J2h0dHBzOi8vYXNzb2NpYXppb25lb2N0YXZpYS5jb20vJyB0YXJnZXQ9J19ibGFuayc+QVNTT0NJQVpJT05FIE9DVEFWSUE8L2E+DQoJCQk8L2xpPjxsaSBjbGFzcz0ndGV4dC10cnVuY2F0ZSc+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0naHR0cDovL3d3dy5tb252aXNvLmV1LycgdGFyZ2V0PSdfYmxhbmsnPlJpc2VydmEgZGVsbGEgQmlvc2ZlcmEgdHJhbnNmcm9udGFsaWVyYSBkZWwgTW9udmlzbzwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LnJlZ2lvbmUucGllbW9udGUuaXQvJyB0YXJnZXQ9J19ibGFuayc+VmlzaXRhIGlsIHNpdG8gZGVsbGEgUmVnaW9uZSBQaWVtb250ZTwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LmFubmlhenp1cnJpLml0L3Jlc2lkZW56YS1hbm5pLWF6enVycmktdmlsbGEtc2FuLXZpbmNlbnpvJyB0YXJnZXQ9J19ibGFuayc+VmlsbGEgU2FuIFZpbmNlbnpvIC0gUmVzaWRlbnphIEFubmkgQXp6dXJyaTwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LnByb3ZpbmNpYS5jdW5lby5pdC8nIHRhcmdldD0nX2JsYW5rJz5WaXNpdGEgaWwgc2l0byBkZWxsYSBQcm92aW5jaWEgZGkgQ3VuZW88L2E+DQoJCQk8L2xpPjxsaSBjbGFzcz0ndGV4dC10cnVuY2F0ZSc+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0naHR0cDovL3d3dy5jb25zb3J6aW9zZWEuaXQnIHRhcmdldD0nX2JsYW5rJz5Db25zb3J6aW8gU2Vydml6aSBFY29sb2dpYSBBbWJpZW50ZTwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LmZpZXJhZGlwcmltYXZlcmEubmV0JyB0YXJnZXQ9J19ibGFuayc+RmllcmEgZGkgUHJpbWF2ZXJhPC9hPg0KCQkJPC9saT48bGkgY2xhc3M9J3RleHQtdHJ1bmNhdGUnPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9J2h0dHBzOi8vaW5kYXRhLmlzdGF0Lml0L3BkYy8nIHRhcmdldD0nX2JsYW5rJz5TY2hlZGEgSXN0YXQgUHJhdGljaGUgZWRpbGl6aWU8L2E+DQoJCQk8L2xpPjxsaSBjbGFzcz0ndGV4dC10cnVuY2F0ZSc+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0naHR0cHM6Ly9jb211bmUuc2FsdXp6by5jbi5pdC91ZmZpY2ktZS1zZXJ2aXppL2FsbGEtcGVyc29uYS9pbmZvcm1hZ2lvdmFuaS8nIHRhcmdldD0nX2JsYW5rJz5JbmZvcm1hIEdpb3ZhbmkgLSBDb211bmUgZGkgU2FsdXp6bzwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3Lm1vbnZpc28uaXQnIHRhcmdldD0nX2JsYW5rJz5Db25zb3J6aW8gTW9udmlzbyBTb2xpZGFsZTwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LmFzbGNuMS5pdC8nIHRhcmdldD0nX2JsYW5rJz5BLlMuTC4gQ04xIC0gQ3VuZW8sIE1vbmRvdsOsIGUgU2F2aWdsaWFubzwvYT4NCgkJCTwvbGk+PGxpIGNsYXNzPSd0ZXh0LXRydW5jYXRlJz4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwOi8vd3d3LmZpdHdhbGtpbmcuaXQvaXRhLycgdGFyZ2V0PSdfYmxhbmsnPkwnYXJ0ZSBkZWwgY2FtbWluYXJlPC9hPg0KCQkJPC9saT48bGkgY2xhc3M9J3RleHQtdHJ1bmNhdGUnPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9J2h0dHA6Ly93d3cubGluZWFhbWljYS5nb3YuaXQvJyB0YXJnZXQ9J19ibGFuayc+TGluZWEgQW1pY2E8L2E+DQoJCQk8L2xpPmQCGQ8WBB8DZR8EaGQCGg8WAh8EaGQCGw8WAh8EaGQCHA8WAh8EaGQCHQ8WAh8EZxYCAgEPFgIfBQUgaHR0cHM6Ly90Lm1lL1Zpc2l0U2Nhcm5hZmlnaV9ib3RkAh4PFgIfBGhkAh8PFgIfBGcWAgIBDxYCHwUFDS9pdGEvcnNzLmFzcHhkAiAPFgIfBGhkAiEPFgIfAwUEMjAyNGRksYEE7XFHRSpMS17e1TPFG33pqYBc//lRR08AMXP0/+4=" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="0C8D02F5" /> </div> <style> @media screen and (max-width: 768px){ .footer-list__media_column { column-count: 1 !important; } } </style> <!-- Header Pagina --> <header class="it-header-wrapper" data-bs-target="#header-nav-wrapper" style=""> <div class="it-header-slim-wrapper"> <div class="container"> <div class="row"> <div class="col-12"> <div class="it-header-slim-wrapper-content"> <a class="d-lg-block navbar-brand" target="_blank" href="https://www.regione.piemonte.it/web/" aria-label="Vai al portale Regione Piemonte - link esterno - apertura nuova scheda" title="Vai al portale Regione Piemonte">Regione Piemonte</a> <div class="it-header-slim-right-zone" role="navigation"> <!-- COMUNI MULTILINGUA --> <div class="nav-item dropdown"> <button type="button" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="languages" aria-haspopup="true"> <span class="visually-hidden">Lingua attiva:</span> <span id="current_lang">ITA</span> <svg class="icon"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-expand"></use> </svg> </button> <div class="dropdown-menu"> <div class="row"> <div class="col-12"> <div class="link-list-wrapper"> <ul class="link-list"> <li><a class="dropdown-item list-item" onclick="SetLang('')"><span>ITA</span></a></li> </ul> </div> </div> </div> </div> </div> <a class="btn btn-primary btn-icon btn-full btn_dislessia" href="#" aria-label="Usa la font Biancoenero ®" data-container="body" data-bs-toggle="popover" data-bs-trigger="hover" data-bs-placement="right" data-html="true" title="Biancoenero ®" data-bs-content="biancoenero ® è la prima font italiana ad Alta Leggibilità, messa a disposizione gratuitamente per chi ne faccia un uso non commerciale; è stata disegnata dai graphic designer Riccardo Lorusso e Umberto Mischi, con la consulenza di Alessandra Finzi (psicologa cognitiva), Daniele Zanoni (esperto di metodi di studio in disturbi dell'apprendimento) e Luciano Perondi (designer e docente di tipografia all'ISIA di Urbino)." style="box-shadow: none !important"> <span class="rounded-icon" aria-hidden="true"> <svg class="icon icon-primary"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-password-visible"></use> </svg> </span> <span class="d-none d-lg-block text-inline">Utenti con dislessia</span> </a> <a class="btn btn-primary btn-icon btn-full" href="/aree-tematiche" aria-label="Vai a Aree Tematiche" style="box-shadow: none !important"> <span class="rounded-icon" aria-hidden="true"> <svg class="icon icon-primary"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-list"></use> </svg> </span> <span class="d-none d-lg-block text-inline">Aree Tematiche</span> </a> <a class="btn btn-primary btn-icon btn-full" aria-label="Vai all'Area Personale" href="https://servizi.comune.scarnafigi.cn.it/servizi/filodiretto2/Login.Aspx?CE=scrnfg591&ACCESSO=C" data-element="personal-area-login" style="box-shadow: none !important"> <span class="rounded-icon" aria-hidden="true"> <svg class="icon icon-primary"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-user"></use> </svg> </span> <span id="areapers_label" class="d-none d-lg-block text-inline">Accedi all'area personale</span> </a> </div> </div> </div> </div> </div> </div> <div class="it-nav-wrapper"> <div class="it-header-center-wrapper"> <div class="container"> <div class="row"> <div class="col-12"> <div class="it-header-center-content-wrapper"> <div class="it-brand-wrapper"> <a href="/index.aspx" title="Vai alla homepage" aria-label="Home Scarnafigi"> <img class="logo_head" src="/images/logo_tratto.png" alt="Scarnafigi" title="Scarnafigi"/> <div class="it-brand-text"> <div class="it-brand-title">Comune di Scarnafigi</div> <!--<p class="sottotitolo_personalizz" style="margin-bottom: 0px">Medaglia d'Oro al Merito Civile</p>--> </div> </a> </div> <div class="it-right-zone"> <div class="it-socials d-none d-lg-flex"> <span>Seguici su</span> <ul> <li id="telegram_icon2"> <a href="https://t.me/VisitScarnafigi_bot" id="telegram_url2" target="_blank" title="Telegram"> <svg class="icon icon-sm icon-white align-top"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-telegram"></use> </svg> <span class="visually-hidden">Telegram</span> </a> </li> <li id="rss_icon2"> <a href="/ita/rss.aspx" id="rss_url2" target="_blank" title="RSS"> <svg class="icon icon-sm icon-white align-top"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-rss"></use> </svg> <span class="visually-hidden">RSS</span> </a> </li> </ul> </div> <div class="it-search-wrapper"> <span class="d-none d-md-block">Cerca</span> <button class="search-link rounded-icon" type="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="Cerca nel sito"> <svg class="icon"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-search"></use> </svg> </button> </div> </div> </div> </div> </div> </div> </div> <div class="it-header-navbar-wrapper" id="header-nav-wrapper"> <div class="container"> <div class="row"> <div class="col-12"> <nav class="navbar navbar-expand-lg has-megamenu" aria-label="Navigazione principale"> <button class="custom-navbar-toggler" type="button" aria-controls="nav4" aria-expanded="false" aria-label="Mostra/Nascondi la navigazione" data-bs-target="#nav4" data-bs-toggle="navbarcollapsible" role="navigation"> <svg class="icon"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-burger"></use> </svg> </button> <div class="navbar-collapsable" id="nav4"> <div class="overlay" style="display: none;"></div> <div class="close-div"> <button class="btn close-menu" type="button"> <span class="visually-hidden">Nascondi la navigazione</span> <svg class="icon"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-close-big"></use> </svg> </button> </div> <div class="menu-wrapper"> <a href="/index.aspx" aria-label="home Scarnafigi" class="logo-hamburger p-0 pt-4 pe-2"> <img loading='lazy' class="logo_head" src="/images/logo-trattoprimary.png" alt="Scarnafigi" title="Scarnafigi"/> <div class="it-brand-text"> <div class="it-brand-title">Comune di Scarnafigi</div> </div> </a> <ul class="navbar-nav navigazione_main" data-element="main-navigation"> <li class="nav-item"> <a class="nav-link" href="/amministrazione" data-element="management"> <span>Amministrazione</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="/novita" data-element="news"> <span>Novità</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="/servizi" data-element="all-services"> <span>Servizi</span> </a> </li> <li class="nav-item"> <a class="nav-link" href="/vivere-il-comune" data-element="live"> <span>Vivere il Comune</span> </a> </li> </ul> <ul id="barra_argomenti" class="navbar-nav navbar-secondary"> <li class='nav-item d-lg-none'> <a class='nav-link text-primary' href='/Admin/WebForms/Cruscotto.aspx'> <span> <svg class='icon icon-primary' aria-hidden='true'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-locked'></use> </svg> Accedi all'area riservata </span> </a> </li> <li class='nav-item'> <a data-element='topic-element' class='nav-link' href='/argomento/4/Accesso-all-27informazione'>Accesso all'informazione</a> </li><li class='nav-item'> <a class='nav-link' href='/amministrazione/documenti-e-dati'> <span>Documenti e dati</span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/argomenti' data-element='all-topics'> <span class='fw-bold'>Tutti gli argomenti</span> </a> </li></ul> <div class="it-socials"> <span>Seguici su</span> <ul> <li id="telegram_icon"> <a href="https://t.me/VisitScarnafigi_bot" id="telegram_url" target="_blank"> <svg class="icon icon-sm icon-white align-top"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-telegram"></use> </svg> <span class="visually-hidden">Telegram</span> </a> </li> <li id="rss_icon"> <a href="/ita/rss.aspx" id="rss_url" target="_blank"> <svg class="icon icon-sm icon-white align-top"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-rss"></use> </svg> <span class="visually-hidden">RSS</span> </a> </li> </ul> </div> </div> </div> </nav> </div> </div> </div> </div> </div> </header> <!-- Contenuto pagina --> <main> <div class="container" id="main-container"> <div class="row justify-content-center"> <div class="col-12 col-lg-10"> <div class="cmp-breadcrumbs" role="navigation"> <nav class="breadcrumb-container"> <ol class="breadcrumb p-0" data-element="breadcrumb"> <li class="breadcrumb-item"><a href="/index.aspx">Home</a><span class="separator">/</span></li> <li class="breadcrumb-item"><a href="/amministrazione">Amministrazione</a><span class="separator">/</span></li> <li id="ContentPlaceHolder1_active_bread" class="breadcrumb-item active" aria-current="page">Privacy</li> </ol> </nav> </div> </div> </div> </div> <div class="row-shadow"> <div class="container"> <div class="row justify-content-center pb-3"> <div class="col-12 offset-lg-1 col-lg-7"> <div class="cmp-hero"> <section class="it-hero-wrapper bg-white align-items-start"> <div class="it-hero-text-wrapper pt-0 ps-0 pb-4 pb-lg-60"> <h1 id="ContentPlaceHolder1_titolo_pagina" class="text-black hero-title" data-element="page-name"> <svg class='icon icon-lg'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-locked'> </use> </svg> Privacy</h1> <div class="hero-text"> <p>Questa pagina contiene l'informativa sulla privacy</p> </div> </div> </section> </div> </div> <div class="col-12 col-lg-4" style="margin-bottom: 25px"> <span class="subtitle-small"><b>TUTTA L'AMMINISTRAZIONE</b></span> <ul id="ContentPlaceHolder1_elenco_uffici" class="link-list t-primary"> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/amministrazione/organi-di-governo"> <span>Organi di governo</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/amministrazione/aree-amministrative"> <span>Aree amministrative</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/amministrazione/uffici"> <span>Uffici</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/amministrazione/documenti-e-dati"> <span>Documenti e dati</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/servizi/amministrazione-trasparente#interni_7"> <span>Enti e fondazioni</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/amministrazione/personale-amministrativo"> <span>Personale amministrativo</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/amministrazione/politici"> <span>Politici</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/servizi/ordinanze"> <span>Ordinanze</span> </a> </li> <li class="mb-1 mt-1"> <a class="list-item ps-0 title-medium" href="/novita/categoria/19/Comunicati-stampa"> <span>Comunicati stampa</span> </a> </li> </ul> </div> </div> </div> </div> <div class="container" style="padding-top: 25px"> <div class="row"> <div id="ContentPlaceHolder1_privacy_append" class="col-12 offset-lg-1 col-lg-7 justify-content-center"> <div> <h3 class='primary-color'>Informativa relativa al trattamento dei dati personali ai sensi</h3> dell’art. 13 del Reg. UE 2016/679 Questa informativa è fornita agli utenti che interagiscono con i servizi web del Comune di <b> Scarnafigi </b> accessibili per via telematica a partire dall'indirizzo: <b>www.comune.scarnafigi.cn.it</b> (oppure dai siti tematici accessibili dalla Rete Civica) corrispondente alla pagina iniziale del sito ufficiale del Comune. <br /><br /> La presente informativa descrive le modalità di gestione del sito web ufficiale del <b> Comune di Scarnafigi </b> di e NON di tutti gli altri siti web esterni consultabili dall'utente tramite link. <br /><br /> <h3 class='primary-color'>1. Titolare del Trattamento dei dati e Responsabile della Protezione Dati (DPO)</h3> <b>Comune di Scarnafigi</b><br /> <b>Corso Carlo Alberto, 1 - 12030 Scarnafigi (CN)</b><br /> <b>segreteria@comune.scarnafigi.cn.it</b><br /> <br /> <b>Il Responsabile per la Protezione dei Dati (DPO) nominato dal Comune è :</b> <br /> <ul> <li> <svg class='icon'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right-triangle'> </use> </svg><b>Ragione Sociale DPO: </b>Aesse Servizi Soc. Coop.</li><li> <svg class='icon'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right-triangle'> </use> </svg><b>Indirizzo DPO: </b>Via Cascina Colombaro, 56, 12100 Cuneo</li><li> <svg class='icon'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right-triangle'> </use> </svg><b>Telefono DPO: </b>0171.451725</li><li> <svg class='icon'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right-triangle'> </use> </svg><b>Fax DPO: </b>0171.451734</li><li> <svg class='icon'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right-triangle'> </use> </svg><b>E-mail DPO: </b>dpo@aesseservizi.eu</li><li> <svg class='icon'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-right-triangle'> </use> </svg><b>PEC DPO: </b>segreteria@pec.aesseservizi.eu</li> </ul> <br> Consulta la <a href='/privacy' target='_blank'>Documentazione, Informative e Modulistica privacy</a> <br> <h3 class='primary-color'>2. Tipologie di dati raccolti</h3> Questa pagina ha lo scopo di informare l’utente circa quali dati vengono raccolti, perché e come vengono utilizzati. Attraverso questo sito vengono trattati due tipi di dati: <ul > <li>Dati forniti dall’utente attraverso la volontaria interazione con il sito, quando si effettuano pagamenti, si compilano “form” (maschere), si inoltrano segnalazioni.</li> <li>Dati raccolti automaticamente dal sito, attraverso i cookie o tecnologie similari; per avere maggiori informazioni sui cookie, invitiamo a consultare la sezione <a href='#policyCookie'>Cookie policy</a> </li> </ul> <h3 class='primary-color'>3. Finalità del Trattamento dei dati raccolti e relativa base giuridica</h3> I dati personali raccolti per il tramite di questo sito sono trattati nel rispetto delle condizioni previste dal Regolamento UE 2016/679 ed in particolare dall’art. 6 – par. 1 lett. e) - e dall’art. 2 ter del D.lgs. 196/2003 “Codice in materia di protezione dei dati personali”, per l’esecuzione di un compito di interesse pubblico e connesso all’esercizio di pubblici poteri di cui è investito il Comune, in coerenza con il D.lgs. n. 82/2005 “Codice dell’Amministrazione Digitale”. <br /><br /> Il conferimento dei dati personali è obbligatorio per i trattamenti necessari all’erogazione dei servizi offerti dal sito (l’eventuale rifiuto rende impossibile l’utilizzo del servizio stesso); è invece facoltativo per l’installazione di cookie di profilazione, per i quali viene richiesto, tramite apposito banner, il consenso dell’Utente. <br />L’eventuale rifiuto di prestare il consenso non ha conseguenze negative sulla navigazione dell’utente nel sito web. <h3 class='primary-color'>4. Modalità di trattamento, comunicazione e diffusione dei dati</h3> I dati personali sono trattati dal Comune adottando le opportune misure di sicurezza volte ad impedire l’accesso, la divulgazione, la modifica o la distruzione non autorizzate dei dati personali.<br /> Il trattamento viene effettuato mediante strumenti informatici e/o telematici,con modalità organizzative e con logiche strettamente correlate alle finalità indicate.<br /> <br /> Oltre al Titolare del trattamento, in alcuni casi, potrebbero avere accesso ai dati soggetti, debitamente designati, coinvolti nell’organizzazione del Titolare ovvero soggetti esterni (come fornitori di servizi tecnici terzi, hosting provider, società informatiche,ecc.) nominati, se necessario, Responsabili del Trattamento da parte del Titolare.<br /> L’elenco aggiornato dei Responsabili potrà sempre essere richiesto al Titolare del Trattamento.<br /><br /> I dati personali non sono oggetto di diffusione o di comunicazione, salvo consenso esplicito dell’interessato e i casi in cui specifiche disposizioni di legge prevedano tale ultima operazione (es. autorità giudiziaria) <h3 class='primary-color'> 5. Trasferimento dei dati</h3> I dati personali sono conservati su server ubicati all’interno dell’Unione Europea e non sono trasferiti a paesi terzi all’esterno dell’Unione Europea o dello Spazio Economico Europeo (SEE) o ad organizzazioni internazionali. <h3 class='primary-color'>6. Periodo di conservazione dei dati personali</h3> I dati personali sono conservati per un periodo di tempo limitato, diverso a seconda del tipo di attività che prevede il trattamento dei tuoi dati personali. <br /> Scaduto questo periodo, i tuoi dati saranno definitivamente cancellati o comunque resi anonimi in via irreversibile.<br /> I dati conferiti spontaneamente dall’utente saranno trattati per tutto il tempo necessario all'erogazione della prestazione o del servizio e, successivamente alla conclusione del procedimento o del servizio erogato, i dati saranno conservati in conformità alle norme sulla conservazione della documentazione amministrativa.<br /> Per conoscere il tempo di validità dei cookie utilizzati da questo sito, invitiamo a consultare la Cookie policy.<br /> In ogni caso, per ragioni tecniche, la cessazione del trattamento e la conseguente cancellazione definitiva o anonimizzazione in via irreversibile dei relativi dati personali sarà definitiva entro trenta giorni dai termini sopra indicati. <h3 class='primary-color'>7. Ulteriori informazioni sul trattamento</h3> <b>7.1 Difesa in giudizio</b><br /> I dati personali dell’utente possono essere utilizzati per la difesa in giudizio del Titolare o nelle fasi propedeutiche alla sua eventuale instaurazione, da abusi nell'utilizzo della stessa o dei servizi connessi da parte dell’utente. <br /><br /> <b>7.2 Informazioni non contenute in questa policy</b><br /> Maggiori informazioni in relazione al trattamento dei dati personali potranno essere richieste in qualsiasi momento al Titolare del Trattamento utilizzando le informazioni di contatto. <br /><br /> <b>7.3 Città in Ordine</b><br /> 'Città in Ordine' è una sezione del sito internet comunale dedicata esclusivamente alle segnalazioni dei cittadini verso il Comune. I dati necessari per effettuare la segnalazione sono nome e cognome dell’utente, indirizzo email e il tipo di problema da segnalare. In mancanza di tali dati è impossibile trasmette la segnalazione.<br /> In aggiunta, l’utente può caricare delle immagini e inviare la propria posizione al Comune tramite la funzione di geolocalizzazione. <br /> Tali dati sono facoltativi e il mancato conferimento non pregiudica l’invio della segnalazione. Una volta inviata agli uffici, la segnalazione è pubblicata nella parte sottostante della pagina web. Le generalità del segnalante vengono oscurate di default. <br /> Spuntando l’opzione dedicata, l’utente acconsente liberamente alla pubblicazione delle proprie generalità in relazione alla segnalazione effettuata. <br />Il mancato consenso alla pubblicazione delle proprie generalità non pregiudica l’invio della segnalazione. <br /><br /> <b>7.4 Log di sistema e manutenzione</b><br /> Per necessità legate al funzionamento ed alla manutenzione, questo raccolgono Log di sistema, ossia file che registrano le interazioni e che possono contenere anche dati personali, quali l’indirizzo IP. <h3 class='primary-color'>8. Esercizio dei diritti da parte degli Utenti</h3> I soggetti cui si riferiscono i dati personali hanno il diritto in qualunque momento di ottenere la conferma dell'esistenza o meno degli stessi presso il Titolare del Trattamento, di conoscerne il contenuto e l'origine, di verificarne l'esattezza o chiederne l’integrazione, la cancellazione, l'aggiornamento, la rettifica, la trasformazione in forma anonima o il blocco dei dati personali trattati in violazione di legge, nonché di opporsi in ogni caso, per motivi legittimi, al loro trattamento. Altre o ulteriori richieste vanno rivolte al Titolare del Trattamento, utilizzando le informazioni di contatto. <h3 class='primary-color'>9. Modifiche</h3> Ci riserviamo il diritto di modificare parzialmente o integralmente la presente Privacy policy o semplicemente di aggiornarne il contenuto, ad es. in seguito a modifiche di legge. Pertanto, si invita l’utente a consultare regolarmente la presente Privacy policy per conoscerne l’ultima versione aggiornata in modo da essere sempre informati circa il modo di raccolta e utilizzo dei dati personali. <br /> <b>Testo aggiornato in data: </b><u>18/11/2021</u> </p> <h3 class='primary-color'>Informativa sull'uso dei cookie</h3> <p><a name='policyCookie'></a></p> Questa informativa sull'utilizzo dei cookie sul sito web <b> www.comune.scarnafigi.cn.it</b> è resa all'utente in attuazione delle disposizioni della direttiva 2002/58/Ce (cd. direttiva ePrivacy) e successive modifiche, come recepita all’art. 122 del d.lgs. 196/03, del Regolamento UE 2016/679 (in seguito GDPR), per ciò che concerne specificamente la nozione di consenso di cui agli artt. 4, punto 11) e 7 e al considerando 32, come da ultimo interpretati dalle Guidelines 05/2020 on consent under Regulation 2016/679 adottate il 4 maggio 2020. <br /><br /> L'informativa è predisposta e aggiornata dal Comune di <b> Scarnafigi </b>, gestore del sito web e Titolare del trattamento di dati personali a esso connesso, con sede in <b> www.comune.scarnafigi.cn.it </b> , P.IVA <b> 00475350047 </b> <br /><br /> Eventuali richieste circa l'utilizzo dei cookie nel presente sito web può essere inviata all'indirizzo email <b> segreteria@comune.scarnafigi.cn.it </b> <br /> Puoi utilizzare lo stesso indirizzo per esercitare, in qualsiasi momento, i diritti che il GDPR ti attribuisce in qualità di interessato (artt. 15 e ss. del GDPR: ad esempio, accesso ai propri dati, cancellazione, aggiornamento, rettifica, integrazione, ecc.). Ricorrendone i presupposti, potrai anche fare reclamo all’Autorità di controllo (Garante per la protezione dei dati personali). <br /><br /> <b>CHE COSA SONO I COOKIE?</b><br /> I cookie sono stringhe di testo di piccola dimensione che il sito web da te visitato ovvero terze parti posizionano ed archiviano nel tuo dispositivo (sia esso un PC, smartphone, tablet, dispositivo IoT,...). <br /><br /> Il browser con cui effettui la navigazione può memorizzare i cookie e poi trasmetterli nuovamente al sito che li ha generati in occasione di una successiva visita, mantenendo così memoria della tua precedente interazione. Le informazioni codificate nei cookie possono includere dati personali, come indirizzo IP, nome utente, identificativo univoco o indirizzo e-mail, ma possono anche contenere dati non personali, come le impostazioni della lingua o informazioni sul tipo di dispositivo utilizzato. <br /><br /> I cookie si possono dividere in due macro-categorie in base alla finalità: <ul > <li>Cookie tecnici. I cookie tecnici sono necessari per il corretto funzionamento del sito web e per permettere la navigazione; senza di essi alcune pagine possono non essere visualizzate correttamente oppure può essere impossibile utilizzare alcuni servizi del sito. Per esempio, un cookie tecnico è indispensabile per mantenere l'utente collegato durante tutta la visita a un sito web (c.d. cookie di navigazione o di sessione), oppure per memorizzare le impostazioni della lingua, della visualizzazione, e così via. L’installazione di questi cookie è automatica al momento dell’accesso al sito web e perché ciò avvenga NON è richiesto il consenso dell’utente.</li> <li>Cookie analitici. I cookie analitici sono utilizzati per valutare l’efficacia del sito web o per contribuire a misurarne il “traffico”, cioè il numero di visitatori ripartiti per area geografica, fascia oraria della connessione o altre caratteristiche. Per i cookie analitici di prima parte o di terza parte anonimizzati NON è richiesto il consenso dell’utente. Non rientrano in questa categoria i cookie analitici di terza parte non anonimizzati, per i quali è sempre necessario acquisire il consenso dell’utente.</li> <li>Cookie di profilazione. I cookie di profilazione vengono utilizzati al fine di inviare messaggi pubblicitari in linea con le preferenze manifestate dall’utente durante la sua navigazione e possono essere utilizzati solo previo consenso.</li> </ul> <br /><br /> Possiamo, inoltre, suddividere i cookie in base ai soggetti coinvolti in:<br /> <ul > <li>Cookie diretti o di prima parte. Si tratta di cookie trasmessi direttamente dal gestore del sito che l’utente sta visitando.</li> <li>Cookie di terze parti. Si tratta di cookie installati da un sito diverso per tramite del primo.</li> </ul> I dati di navigazione non persistono per più di sette giorni e vengono cancellati immediatamente dopo la loro aggregazione <br /> <br /> <h3>Cookie tecnici</h3> <div class='table-responsive' style='width: 70vw'> <table class='table'> <thead> <tr> <th scope='col'>Nome</th> <th scope='col'>Dominio</th> <th scope='col'>Scadenza</th> <th scope='col'>Tipo</th> <th scope='col'>Categoria</th> <th scope='col'>Scopo</th> </tr> </thead> <tbody> <tr> <th scope='row'>cc_cookie</th> <td>www.comune.scarnafigi.cn.it</td> <td>7 giorni</td> <td>Tecnico</td> <td>Prima parte</td> <td>Viene utilizzato per memorizzare la scelta dell'utente riguardo l'accettazione dei cookie sul sito web.</td> </tr> <tr> <th scope='row'>ASP.NET_SessionId</th> <td>www.comune.scarnafigi.cn.it</td> <td>Durata Sessione</td> <td>Tecnico</td> <td> Prima parte </td> <td>Viene utilizzato per identificare in modo univoco la sessione dell'utente sul server.</td> </tr> </tbody> </table> </div> <br> <h3>Cookie di terze parti</h3> <div class='table-responsive' style='width: 70vw'> <table class='table'> <thead> <tr> <th scope='col'>Nome</th> <th scope='col'>Dominio</th> <th scope='col'>Scadenza</th> <th scope='col'>Tipo</th> <th scope='col'>Categoria</th> <th scope='col'>Scopo</th> </tr> </thead> <tbody> <tr> <th scope='row'>_pk_id</th> <td>www.matomo.org</td> <td>13 Mesi</td> <td>Identificazione</td> <td>Terze Parti</td> <td>Utilizzato per memorizzare un Guid (codice random autogenerato) per identificare l'utente con un ID visitatore unico</td> </tr> <tr> <th scope='row'>_pk_ref</th> <td>www.matomo.org</td> <td>6 Mesi</td> <td>Tracciamento</td> <td>Terze Parti</td> <td> Utilizzato per memorizzare le informazioni di attribuzione, il referrer inizialmente utilizzato per visitare il sito web </td> </tr> <tr> <th scope='row'>_pk_ses</th> <td>www.matomo.org</td> <td>30 Minuti</td> <td>Sessione</td> <td>Terze Parti</td> <td>Cookie di breve durata utilizzati per memorizzare temporaneamente i dati per la visita</td> </tr> </tbody> </table> </div> <p> <br /><br /> <b> QUANDO E COME É RICHIESTO IL CONSENSO DELL’UTENTE?</b><br /> Per l’installazione dei cookie tecnici non è necessario il consenso dell’utente.<br /> Non sono presenti dei cookie di profilazione e analitici non anonimizzati.<br /> Per l’installazione dei cookie di profilazione e analitici non anonimizzati è, invece, necessario il consenso preventivo.<br /> Per questo, al primo accesso alla home page (o altra pagina) del nostro sito è proposto un apposito banner attraverso il quale l’utente potrà esprimere il proprio consenso. </p> <p> <b>ATTIVAZIONE E DISATTIVAZIONE DEI COOKIE</b><br /> In qualsiasi momento è possibile collegarsi all’area dedicata per modificare le preferenze sui cookie, bloccare o eliminare i cookie dal proprio dispositivo. Per bloccare o eliminare i cookie dal proprio dispositivo è necessario fare riferimento alle istruzioni fornite dal browser Internet utilizzato. <br /> I link qui di seguito illustrano come fare per disattivare i cookie dai browser più diffusi.<br /> <a href='http://windows.microsoft.com/it-IT/windows-vista/Block-or-allow-cookies' target='_blank'> Internet Explorer™</a> <br /> <a href='http://www.apple.com/it/support/' target='_blank'> Safari™</a> <br /> <a href='https://support.google.com/chrome/answer/95647?hl=it&hlrm=en' target='_blank'>Chrome™</a> <br /> <a href='http://support.mozilla.org/it/kb/Attivare%20e%20disattivare%20i%20cookie' target='_blank'>Firefox™</a> <br /> <a href='http://help.opera.com/Windows/10.20/it/cookies.html'>Opera™</a> <br /><br /> Per ulteriori informazioni sull’uso dei cookie si veda il sito <a href='https://www.allaboutcookies.org' target='_blank'>www.allaboutcookies.org</a><br /> Per ulteriori informazioni sul trattamento dei dati personali effettuato attraverso questo sito si veda <a href='/privacy'>www.comune.scarnafigi.cn.it</a> </div> </div> </div> </div> </main> <div class="bg-primary no-print"> <div class="container"> <div class="row d-flex justify-content-center bg-primary"> <div class="col-12 col-lg-6"> <div class="cmp-rating pt-lg-80 pb-lg-80" id=""> <div class="card shadow card-wrapper" data-element="feedback"> <div class="cmp-rating__card-first"> <div class="card-header border-0"> <h2 class="title-medium-2-semi-bold mb-0" id="title_valuta" data-element="feedback-title"></h2> </div> <div class="card-body"> <fieldset class="rating"> <legend class="visually-hidden">Valuta da 1 a 5 stelle la pagina</legend> <input type="radio" id="star5a" name="ratingA" value="5"> <label class="full rating-star" for="star5a" data-element="feedback-rate-5"> <svg class="icon icon-sm" role="img" aria-labelledby="first-star"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-star-full"></use> </svg> <span class="visually-hidden" id="first-star">Valuta 5 stelle su 5</span> </label> <input type="radio" id="star4a" name="ratingA" value="4"> <label class="full rating-star" for="star4a" data-element="feedback-rate-4"> <svg class="icon icon-sm" role="img" aria-labelledby="second-star"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-star-full"></use> </svg> <span class="visually-hidden" id="second-star">Valuta 4 stelle su 5</span> </label> <input type="radio" id="star3a" name="ratingA" value="3"> <label class="full rating-star" for="star3a" data-element="feedback-rate-3"> <svg class="icon icon-sm" role="img" aria-labelledby="third-star"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-star-full"></use> </svg> <span class="visually-hidden" id="third-star">Valuta 3 stelle su 5</span> </label> <input type="radio" id="star2a" name="ratingA" value="2"> <label class="full rating-star" for="star2a" data-element="feedback-rate-2"> <svg class="icon icon-sm" role="img" aria-labelledby="fourth-star" > <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-star-full"></use> </svg> <span class="visually-hidden" id="fourth-star">Valuta 2 stelle su 5</span> </label> <input type="radio" id="star1a" name="ratingA" value="1"> <label class="full rating-star" for="star1a" data-element="feedback-rate-1"> <svg class="icon icon-sm" role="img" aria-labelledby="fifth-star"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-star-full"></use> </svg> <span class="visually-hidden" id="fifth-star">Valuta 1 stelle su 5</span> </label> </fieldset> </div> </div> <div class="cmp-rating__card-second d-none" data-step="3" data-finalstep="true"> <div class="card-header border-0 mb-0"> <h2 class="title-medium-2-bold mb-0" id="rating-feedback">Grazie, il tuo parere ci aiuterà a migliorare il servizio!</h2> </div> </div> <div class="form-rating d-none"> <div class="d-none" data-step="1"> <div class="cmp-steps-rating"> <fieldset> <div class="iscrizioni-header w-100"> <h3 class="step-title d-flex align-items-center justify-content-between drop-shadow"> <legend class="d-block d-lg-inline" data-element="feedback-rating-positive" id="change_on_star_change_title"></legend> <span class="step">1/2</span> </h3> </div> <div class="cmp-steps-rating__body"> <div class="cmp-radio-list"> <div class="card-teaser shadow-rating"> <div class="card-body"> <div class="form-check m-0" id="change_on_star_change_options"> </div> </div> </div> </div> </div> </fieldset> </div> </div> <div class="d-none" data-step="2"> <div class="cmp-steps-rating"> <fieldset> <div class="iscrizioni-header w-100"> <h3 class="step-title d-flex align-items-center justify-content-between drop-shadow mb-5"> <legend class="d-block d-lg-inline">Vuoi aggiungere altri dettagli?</legend> <span class="step">2/2</span> </h3> </div> <div class="cmp-steps-rating__body"> <div class="form-group"> <label for="formGroupExampleInputWithHelp">Dettaglio</label> <input type="text" class="form-control" id="formGroupExampleInputWithHelp" aria-describedby="formGroupExampleInputWithHelpDescription" maxlength="200" data-element="feedback-input-text"> <small id="formGroupExampleInputWithHelpDescription" class="form-text">Inserire massimo 200 caratteri</small> </div> </div> </fieldset> </div> </div> <div class="d-flex flex-nowrap pt-4 w-100 justify-content-center button-shadow"> <button class="btn btn-outline-primary fw-bold me-4 btn-back" type="button">Indietro</button> <button class="btn btn-primary fw-bold btn-next" type="submit" onclick="" form="rating">Avanti</button> </div> </div> </div> </div> </div> </div> </div> </div> <div id="card_contatta_comune" class="bg-grey-card shadow-contacts" style="background-repeat:no-repeat;background-size:cover !important;background: linear-gradient( rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2) ), url('/cgi-bin/testate/img1.webp');"> <div class="container"> <div class="row d-flex justify-content-center p-contacts"> <div class="col-12 col-lg-6"> <div class="cmp-contacts"> <div class="card w-100"> <div class="card-body"> <h2 class="title-medium-2-semi-bold">Contatta il comune</h2> <ul class="contact-list p-0"> <li> <a class="list-item" href="/servizi/elenco-domande-frequenti" data-element="faq"> <svg class="icon icon-primary icon-sm" aria-hidden="true"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-help-circle"></use> </svg><span>Leggi le domande frequenti</span></a></li> <li><a class="list-item" href="/moduli/richiesta-assistenza" data-element="contacts"> <svg class="icon icon-primary icon-sm" aria-hidden="true"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-mail"></use> </svg><span>Richiedi assistenza</span></a></li> <li><a href="tel:0175.74101-74402" id="ncell_href" class="list-item"> <svg class="icon icon-primary icon-sm" aria-hidden="true"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-hearing"></use> </svg><span id="ncell">Chiama il numero 0175.74101-74402</span></a></li> <li><a class="list-item" href="/moduli/prenota-appuntamento-1" data-element="appointment-booking"> <svg class="icon icon-primary icon-sm" aria-hidden="true"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-calendar"></use> </svg><span>Prenota appuntamento</span></a></li> </ul> <h2 class="title-medium-2-semi-bold mt-4">Problemi in città</h2> <ul class="contact-list p-0"> <li><a data-element="report-inefficiency" class="list-item" href="/moduli/segnalazione-disservizio-1"> <svg class="icon icon-primary icon-sm" aria-hidden="true"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-map-marker-circle"></use> </svg><span>Segnala disservizio </span></a></li> </ul> <!--<h2 class="title-medium-2-semi-bold mt-4">Bacheca Cittadino</h2> <ul class="contact-list p-0"> <li><a class="list-item" href="/area-personale"> <svg class="icon icon-primary icon-sm" aria-hidden="true"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-user"></use> </svg><span>Accedi alla bacheca servizi </span></a></li> </ul>--> </div> </div> </div> </div> </div> </div> </div> <!-- Footer pagina --> <footer class="it-footer" id="footer"> <div class="it-footer-main"> <div class="container"> <div class="row"> <div class="col-sm-5 footer-items-wrapper logo-wrapper"> <img loading='lazy' class="img_logo_footer" src="/assets/images/logo-eu-inverted.svg" title="Finanziato dall'Unione Europea - NextGenerationEU" alt="Finanziato dall'Unione Europea - NextGenerationEU" style="height: 56px; width: 178px; object-fit: contain;"/> <div class="it-brand-wrapper"> <a href="/index.aspx" title="Vai alla homepage"> <img class="img-fluid img_logo_footer" style="width: 43px; height: 56px; object-fit: contain;" src="/images/logo_tratto.png" alt="Scarnafigi" title="Scarnafigi"/> <div class="it-brand-text"> <h2 class="no_toc">Scarnafigi</h2> </div> </a> </div> </div> <div class="col-sm-2 footer-items-wrapper footer-pageclose justify-content-end align-middle" style="padding-top:40px; visibility: hidden"> </div> <div class="col-sm-5 footer-items-wrapper logo-wrapper justify-content-end align-middle"> <a target="_blank" href="https://padigitale2026.gov.it/" title="Vai a PaDigitale2026"> <img loading='lazy' class="img_logo_footer" src="/assets/images/padigitale2026.jpg" alt='Logo PA Digitale 2026' title="Logo PA Digitale 2026" style="width: 244px; height:45px; object-fit:contain; margin-top: 5px;"/> </a> </div> </div> <div class="row"> <div class="col-md-3 footer-items-wrapper"> <h3 class="footer-heading-title">Amministrazione</h3> <div class="row"> <div class="col-md-12"> <ul class="footer-list"> <li> <a href="/amministrazione/organi-di-governo">Organi di Governo</a> </li> <li> <a href="/amministrazione/aree-amministrative">Aree Amministrative</a> </li> <li> <a href="/amministrazione/uffici">Uffici</a> </li> <li> <a href="/amministrazione/documenti-e-dati">Documenti e Dati</a> </li> <li> <a href="/servizi/amministrazione-trasparente#interni_7">Enti e Fondazioni</a> </li> <li> <a href="/amministrazione/personale-amministrativo">Personale Amministrativo</a> </li> <li> <a href="/amministrazione/politici">Politici</a> </li> </ul> </div> </div> </div> <div class="col-md-5 footer-items-wrapper"> <h3 class="footer-heading-title">Categorie di Servizio</h3> <ul id="cat_di_servizio_list" class="footer-list footer-list__media_column" style="column-count: 2;"> <li> <a href='/servizio/15/Agricoltura e pesca'>Agricoltura e pesca</a> </li><li> <a href='/servizio/11/Ambiente'>Ambiente</a> </li><li> <a href='/servizio/6/Anagrafe e stato civile'>Anagrafe e stato civile</a> </li><li> <a href='/servizio/14/Appalti pubblici'>Appalti pubblici</a> </li><li> <a href='/servizio/13/Autorizzazioni'>Autorizzazioni</a> </li><li> <a href='/servizio/5/Catasto e urbanistica'>Catasto e urbanistica</a> </li><li> <a href='/servizio/10/Cultura e tempo libero'>Cultura e tempo libero</a> </li><li> <a href='/servizio/1/Educazione e formazione'>Educazione e formazione</a> </li><li> <a href='/servizio/8/Giustizia e sicurezza pubblica'>Giustizia e sicurezza pubblica</a> </li><li> <a href='/servizio/12/Imprese e commercio'>Imprese e commercio</a> </li><li> <a href='/servizio/4/Mobilità e trasporti'>Mobilità e trasporti</a> </li><li> <a href='/servizio/2/Salute, benessere e assistenza'>Salute, benessere e assistenza</a> </li><li> <a href='/servizio/9/Tributi, finanze e contravvenzioni'>Tributi, finanze e contravvenzioni</a> </li><li> <a href='/servizio/7/Turismo'>Turismo</a> </li><li> <a href='/servizio/3/Vita lavorativa'>Vita lavorativa</a> </li></ul> </div> <div class="col-md-2 footer-items-wrapper"> <h3 class="footer-heading-title">NOVITÀ</h3> <ul id="novita_list" class="footer-list"> <li> <a href='/novita/categoria/18/Notizie'>Notizie</a> </li><li> <a href='/novita/categoria/20/ME PAìS'>Me paìs</a> </li><li> <a href='/novita/categoria/146/Avvisi'>Avvisi</a> </li><li> <a href='/novita/categoria/147/Comunicati'>Comunicati</a> </li></ul> </div> <div class="col-md-2 footer-items-wrapper"> <h3 class="footer-heading-title">VIVERE IL COMUNE</h3> <ul id="vivere_il_comune_list" class="footer-list"> <li><a href="/novita/eventi">Eventi</a></li> <li><a href="/vivere-il-comune#luo_append">Luoghi</a></li> <li><a href="/vivere-il-comune#p_append">Il Territorio</a></li> <li><a href="/vivere-il-comune/gallery">Galleria Fotografica</a></li> <li><a href="/vivere-il-comune/videogallery">Galleria Video</a></li> <li><a href="/vivere-il-comune#eco_append">Attività economiche e Servizi</a></li> <li><a href="/vivere-il-comune#ass_append">Associazioni e Comitati</a></li> </ul> </div> <!-- <div class="col-md-2 footer-items-wrapper"> <h3 class="footer-heading-title">Siti tematici</h3> <div class="row"> <div class="col-md-12"> <ul class="footer-list"> <li> <a href="#">Visita il sito della Regione Piemonte</a> </li> <li> <a href="#">Provincia di Cuneo</a> </li> <li> <a href="#">Pro Loco di Barbaresco</a> </li> <li> <a href="#">Azienda Sanitaria Locale CN2 Alba-Bra</a> </li> <li> <a href="#">Ente Turismo Alba Bra Langhe Roero</a> </li> <li> <a href="#">GAL Langhe Roero Leader</a> </li> <li> <a href="#">Associazione Turismo in Langa</a> </li> <li> <a href="#">Paesaggi Vitivinicoli di Langhe-Roero</a> </li> <li> <a href="#">L’itinerario BartoBar</a> </li> <li> <a href="#">Enoteca Regionale del Barbaresco</a> </li> <li> <a href="#">Langhe.Net</a> </li> </ul> </div> </div> </div> --> </div> <div class="row" style='margin-top: 25px;'> <div class="col-md-6 footer-items-wrapper"> <h3 class="footer-heading-title">Contatti e recapiti</h3> <div class="row"> <div class="col-12"> <p id="footer_info" class="footer-info"> Corso Carlo Alberto, 1 - 12030 Scarnafigi (CN)<br /> Tel: <a href='tel:0175.74101-74402'>0175.74101-74402</a><br /> Fax: <a href='fax:0175.74619'>0175.74619</a><br /> Codice Fiscale: <strong>85002050046</strong><br /> Partita IVA: <strong>00475350047</strong><br /> P.E.C.: <a href='mailto:scarnafigi@pec.comune.scarnafigi.cn.it' title='pec nome comune'>scarnafigi@pec.comune.scarnafigi.cn.it</a><br /> Email: <a href='mailto:segreteria@comune.scarnafigi.cn.it' title='email nome comune'>segreteria@comune.scarnafigi.cn.it</a><br /> Fatturazione Elettronica: <strong>UFWOI2</strong><br /> Codice IPA: <strong>c_i512</strong><br /> IBAN (per i vostri bonifici bancari):<br /><strong>Conto Banca d'Italia: 300491<br>Conto di Tesoreria IBAN:<br>IT51R0538746770000038012160</strong><br /> Conto Corrente Postale:<br /><strong>15878127</strong><br /> </p> </div> </div> </div> <div class="col-md-6 footer-items-wrapper"> <h3 class="footer-heading-title">Dati territoriali</h3> <div class="row"> <div class="col-12"> <p id="second_footer_info" class="footer-info"> Codice ISTAT: <strong>004217</strong> Codice Catastale: <strong>I512</strong><br /> Abitanti: <strong>2.102 al 31.12.2023</strong> Denominazione: <strong>Scarnafigesi</strong><br /> Superficie: <strong>30,41</strong> Kmq. Densità: <strong>69</strong> (ab/kmq.)<br /> Santo patrono: <strong>Corpi Santi - ultima domenica di settembre</strong><br /> Altitudine media: <strong>296</strong> m.s.l.m.<br /> Latitudine: <strong>44° 40' 54''</strong> Longitudine: <strong>7° 33' 59''</strong><br /> Comuni limitrofi: <strong>Saluzzo, Lagnasco, Savigliano, Monasterolo di Savigliano, Ruffia, Villanova Solaro, Torre San Giorgio</strong><br /> Frazioni e borgate: <strong>Fornaca, La Grangia</strong><br /><br /> <strong>Responsabile della protezione dei dati (D.P.O.)</strong><br /> Email: <a href='mailto:dpo@aesseservizi.eu' title='pec dpo'>dpo@aesseservizi.eu</a><br /> Pec: <a href='mailto:segreteria@pec.aesseservizi.eu' title='pec legalmail'>segreteria@pec.aesseservizi.eu</a><br /> </p> </div> </div> </div> </div> <div class="row" style='margin-top:25px;'> <div class="col-md-3 footer-items-wrapper"> <h3 class="footer-heading-title">Utilità</h3> <ul id="utilita_list" class="footer-list footer-list__media_column"> <li><a href="/servizi/amministrazione-trasparente">Amministrazione Trasparente</a></li> <li id="accessibilita_link"><a href='https://form.agid.gov.it/view/580e78ee-65ca-4f10-8b79-dd535921083d/' data-element='accessibility-link' target='_blank'>Dichiarazione di accessibilità</a></li> <li><a href="/ita/piano_miglioramento.aspx">Piano di miglioramento del sito</a></li> <li><a data-element="faq" href="/servizi/elenco-domande-frequenti">Leggi le FAQ</a></li> <li><a href="/moduli/prenota-appuntamento-1">Prenotazione Appuntamento</a></li> <li><a data-element="report-inefficiency" href="/moduli/segnalazione-disservizio-1">Segnalazione Disservizio</a></li> <li><a href="/moduli/richiesta-assistenza">Richiesta d'Assistenza</a></li> <li><a href="/area-personale">Bacheca Servizi</a></li> <li><a href="/cgi-bin/archivio/statuto.pdf" id="statuto_append" target="_blank">Statuto Comunale</a></li> <li><a data-element="privacy-policy-link" href="/amministrazione/informativa-privacy">Informativa privacy</a></li> <li><a data-element="legal-notes" href="/amministrazione/note-legali">Note legali</a></li> <li><a data-cc="c-settings" aria-haspopup="dialog">Impostazioni Cookie</a></li> <li><a href="https://www.cittaincomune.it/">Credits</a></li> <li><a href="/log">Ultimi aggiornamenti</a></li> <li><a href="/ita/statistiche.aspx">Statistiche</a></li> <li><a href="/ita/mappa_sito.aspx">Mappa del Sito</a></li> <!--<li><a data-element="service-link" href="/servizi/faq/79/a">Servizio</a></li>--> </ul> </div> <div class="col-md-6 footer-items-wrapper"> <h3 class="footer-heading-title">Siti Amici</h3> <ul id="list_siti_amici" class="footer-list footer-list__media_column" style="column-count: 2;"> <li class='text-truncate'> <a href='http://www.casadiriposoreginadellapace.it/home/' target='_blank'>Casa di Riposo Regina della Pace</a> </li><li class='text-truncate'> <a href='http://www.visitmove.it/' target='_blank'>VisitMOVE_MonvisoOccitanValleysEurope</a> </li><li class='text-truncate'> <a href='https://www.visitcuneese.it/' target='_blank'>VISIT CUNEESE</a> </li><li class='text-truncate'> <a href='https://associazioneoctavia.com/' target='_blank'>ASSOCIAZIONE OCTAVIA</a> </li><li class='text-truncate'> <a href='http://www.monviso.eu/' target='_blank'>Riserva della Biosfera transfrontaliera del Monviso</a> </li><li class='text-truncate'> <a href='http://www.regione.piemonte.it/' target='_blank'>Visita il sito della Regione Piemonte</a> </li><li class='text-truncate'> <a href='http://www.anniazzurri.it/residenza-anni-azzurri-villa-san-vincenzo' target='_blank'>Villa San Vincenzo - Residenza Anni Azzurri</a> </li><li class='text-truncate'> <a href='http://www.provincia.cuneo.it/' target='_blank'>Visita il sito della Provincia di Cuneo</a> </li><li class='text-truncate'> <a href='http://www.consorziosea.it' target='_blank'>Consorzio Servizi Ecologia Ambiente</a> </li><li class='text-truncate'> <a href='http://www.fieradiprimavera.net' target='_blank'>Fiera di Primavera</a> </li><li class='text-truncate'> <a href='https://indata.istat.it/pdc/' target='_blank'>Scheda Istat Pratiche edilizie</a> </li><li class='text-truncate'> <a href='https://comune.saluzzo.cn.it/uffici-e-servizi/alla-persona/informagiovani/' target='_blank'>Informa Giovani - Comune di Saluzzo</a> </li><li class='text-truncate'> <a href='http://www.monviso.it' target='_blank'>Consorzio Monviso Solidale</a> </li><li class='text-truncate'> <a href='http://www.aslcn1.it/' target='_blank'>A.S.L. CN1 - Cuneo, Mondovì e Savigliano</a> </li><li class='text-truncate'> <a href='http://www.fitwalking.it/ita/' target='_blank'>L'arte del camminare</a> </li><li class='text-truncate'> <a href='http://www.lineaamica.gov.it/' target='_blank'>Linea Amica</a> </li></ul> </div> <div class="col-md-3 footer-items-wrapper"> <h3 class="footer-heading-title">Un grazie a...</h3> </div> </div> <div class="row"> <div class="col-12 footer-items-wrapper text-center"> <div class="footer-bottom"> <div class="it-socials"> <span class="d-inline-block">Seguici su</span> <ul class="d-inline-block"> <li id="footerTelegramLi" class="d-inline-block ms-3"> <a href="https://t.me/VisitScarnafigi_bot" id="footerTelegram" target="_blank" title="Telegram"> <svg class="icon icon-sm icon-white align-top"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-telegram"></use> </svg> <span class="visually-hidden">Telegram</span> </a> </li> <li id="footerRSSLi" class="d-inline-block ms-3"> <a href="/ita/rss.aspx" id="footerRSS" target="_blank" title="RSS"> <svg class="icon icon-sm icon-white align-top"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-rss"></use> </svg> <span class="visually-hidden">RSS</span> </a> </li> </ul> </div> </div> </div> <div class="row"> <div class="col-12 footer-items-wrapper text-center"> <p> © <span id="anno_corrente_footer">2024</span> Comune di <strong>Scarnafigi</strong> - Tutti i diritti riservati - I contenuti del sito, testi e immagini sono di proprietà del Comune - CMS: <a href='https://www.cittaincomune.it/' target='_blank'>Città In Comune</a><a style="margin-left:5px" target="_blank" alt="Assistenza remota" title="Assistenza remota" href="http://www.supremocontrol.com/download.aspx?file=Supremo.exe&id_sw=7&ws=supremocontrol.com"><svg class='icon icon-white' aria-hidden='true' style='width:27px; height: 27px'><use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-settings'></use></svg></a><br /> Questo sito utilizza, nella versione per UTENTI CON DISLESSIA, <a href='http://www.biancoeneroedizioni.it/font/' target='_blank'>Biancoenero ®</a>, una font italiana ad Alta Leggibilità.<br /> <a class="fw-bold" target="_blank" href="/Admin/WebForms/Cruscotto.aspx"><svg class="icon icon-white" aria-hidden='true' style='width:24px; height: 23px'><use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-locked'></use></svg>AREA RISERVATA</a> </p> </div> </div> </div> </div> </footer> <!-- Modal Ricerca --> <div class="modal fade search-modal" id="search-modal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content perfect-scrollbar"> <div class="modal-body"> <div class="container"> <div class="row variable-gutters"> <div class="col"> <div class="modal-title"> <button class="search-link d-md-none" type="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="Chiudi e torna alla pagina precedente"> <svg class="icon icon-md"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-arrow-left"></use> </svg> </button> <h2>Cerca</h2> <button class="search-link d-none d-md-block" type="button" data-bs-toggle="modal" data-bs-target="#search-modal" aria-label="Chiudi e torna alla pagina precedente"> <svg class="icon icon-md"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-close-big"></use> </svg> </button> </div> <div class="form-group autocomplete-wrapper"> <label for="autocomplete-two" class="visually-hidden">Cerca nel sito</label> <input type="text" class="autocomplete ps-5" placeholder="Cerca nel sito" id="txt_ricerca" name="autocomplete-two" > <span class="autocomplete-icon" aria-hidden="true"> <svg class="icon"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-search"></use> </svg> </span> <button onclick="avviaRicerca()" type="button" class="btn btn-primary"> <span class="">Cerca</span> </button> </div> </div> </div> <div class="row variable-gutters"> <div class="col-lg-5"> <div class="searches-list-wrapper"> <div class="other-link-title">FORSE STAVI CERCANDO</div> <ul id="elenco_servizi_random" class="searches-list" role="list"> </ul> </div> </div> </div> </div> </div> </div> </div> </div> <!-- Modal Per le Modifiche --> <div class="modal it-dialog-scrollable fade" tabindex="-1" role="dialog" id="modalright" aria-labelledby="modalrightTitle"> <div class="modal-dialog modal-dialog-right" role="document" style="width:60vw !important;max-width:60vw !important;"> <div class="modal-content"> <div class="modal-header" style="background-color:var(--primary) !important;"> <svg class="icon icon-white"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-info-circle"></use> </svg> <h2 style="padding-left:15px; color:white !important;" class="modal-title h5 " id="modal3Title">Aggiungi / Modifica - ELEMENTO</h2> <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Chiudi finestra modale"> <svg class="icon icon-white"> <use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-close"></use> </svg> </button> </div> <div class="modal-body overflow-hidden" style="padding:0px !important;"> <iframe id="cambia" src="/admin/webforms/frames_modifica/loader.html" class="h-100 w-100" style="border:0px solid #fff;"></iframe> </div> <div class="modal-footer align-center" style="background-color:var(--primary) !important; justify-content: center !important; color: white !important;"> <button class="salva_modal btn btn-outline-primary-white btn-sm" type="button">SALVA DATI</button> </div> </div> </div> </div> <div class="notification fade top-fix with-icon error" role="alert" aria-labelledby="errorNotify-footer-title" id="errorNotify-footer" style="z-index: 99999999999999999999999999999999999999999999999999999 !important; margin-top:10px;"> <h2 id="errorNotify-footer-title" class="h5"><svg class="icon"><use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-close-circle"></use></svg>PARAMETRI ERRATI</h2> <p>Hai dimenticato di selezionare una voce!</p> </div> <div class="notification fade top-fix with-icon error" role="alert" aria-labelledby="dbNotify-footer-title" id="dbNotify-footer" style="z-index: 99999999999999999999999999999999999999999999999999999 !important; margin-top:10px;"> <h2 id="dbNotify-footer-title" class="h5"><svg class="icon"><use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-close-circle"></use></svg>PARAMETRI ERRATI</h2> <p>Qualcosa è andato storto nel salvataggio dei dati... Contattare l'assistenza</p> </div> <div class="notification fade top-fix with-icon success" role="alert" data-bs-timeout="2000" aria-labelledby="successNotify-footer-title" id="successNotify-footer" style="z-index: 99999999999999999999999999999999999999999999999999999 !important; margin-top:10px;"> <h2 id="successNotify-footer-title" class="h5"><svg class="icon"><use href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-check-circle"></use></svg>VALUTAZIONE INVIATA CON SUCCESSO</h2> </div> <div id="topcontrol" title="Torna su" style="border-radius: 5px;"> <svg class='icon icon-md' aria-hidden='true'> <use xlink:href='/assets/bootstrap-italia/dist/svg/sprites.svg#it-collapse'></use> </svg> </div> <input type="hidden" name="ctl00$hdnColore" id="hdnColore" /> <input type="hidden" name="ctl00$hdnLatitude" id="hdnLatitude" value="44.68174358668843" /> <input type="hidden" name="ctl00$hdnLongitude" id="hdnLongitude" value="7.566821934814769" /> <input type="hidden" name="ctl00$hdnAbsoluteUrl" id="hdnAbsoluteUrl" value="/ita/amministrazione/privacy.aspx" /> <!-- Scripts --> <script>window.__PUBLIC_PATH__ = "/assets/bootstrap-italia/dist/fonts"</script> <script defer src="/assets/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script> <!-- defer --> <script defer src="/assets/script/scripts.js"></script> <script defer src="/assets/js/jquery.fancybox.min.js"></script> <script defer src="/assets/js/mark.min.js"></script> <script async> /*ELENCO PAGINE CON FRASE VALUTAZIONE MODIFICATA (Servizi)*/ var elencoServizi = [ "/ita/moduli/richieste/citta_in_ordine1.aspx", "/ita/moduli/richieste/citta_in_ordine2.aspx", "/ita/moduli/richieste/citta_in_ordine3.aspx", "/ita/moduli/richieste/citta_in_ordine4.aspx", "/ita/moduli/richieste/citta_in_ordine5.aspx", "/ita/moduli/richieste/mappa_segnalazioni.aspx", "/ita/moduli/richieste/prenota_appuntamento1.aspx", "/ita/moduli/richieste/prenota_appuntamento2.aspx", "/ita/moduli/richieste/prenota_appuntamento3.aspx", "/ita/moduli/richieste/prenota_appuntamento4.aspx", "/ita/moduli/richieste/prenota_appuntamento5.aspx", "/ita/moduli/richieste/prenota_appuntamento6.aspx", "/ita/moduli/richieste/richiesta_assistenza.aspx", "/ita/moduli/richieste/richiesta_assistenza_finalizzata.aspx" ]; function rgb2hex(rgb) { if (rgb.search("rgb") == -1) { return rgb; } else { rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/); function hex(x) { return ("0" + parseInt(x).toString(16)).slice(-2); } return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); } } $("#hdnColore").val(rgb2hex($("#header-nav-wrapper").css('background-color'))); function SetLang(lng) { $.ajax({ type: "POST", url: "/services/v1/ServiceMethod.aspx/SetLingua",//?lingua=" + lng, data: JSON.stringify({ "lingua": lng }), contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { window.location.reload(); }, error: function (e) { alert("Attenzione, Errore durante il cambiamento della lingua!"); } }); } $("document").ready(function () { var evidenzia = localStorage.getItem("evidenzia"); if (evidenzia != null) { var markInstance = $(".cmp-heading, section.it-page-sections-container"); try { for (let item of markInstance) { var myItem = new Mark(item); myItem.unmark(); myItem.mark(evidenzia, { separateWordSearch: false, each: function (item) { $(item).css("background-color", "orange").css("color", "black"); } }); var regex = new RegExp("\\b(" + evidenzia.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&').split(" ").join("|") + ")\\b", "gi"); myItem.markRegExp(regex, { each: function (item) { $(item).css("background-color", "yellow").css("color", "black"); } }); } } catch (ex) { console.warn("MarkJs error. Message: " + ex.message) } localStorage.removeItem("evidenzia"); } $("#current_lang").html("ITA"); $("body").removeClass("dislessia"); $(".btn_dislessia").html(`<span class="rounded-icon" aria-hidden="true"> <svg class="icon icon-primary"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-password-visible"></use> </svg> </span> <span class="d-none d-lg-block text-inline">Utenti con dislessia</span`); //--------------------------------// //On change stelline change testo & options CaricaRandomRicerca(); if (!elencoServizi.includes($("#hdnAbsoluteUrl").val())) { $("#title_valuta").html(""); $("#title_valuta").html("Quanto sono chiare le informazioni su questa pagina?"); } else { $("#title_valuta").html(""); $("#title_valuta").html("Quanto è stato facile usare questo servizio?"); } $('input[type=radio][name=ratingA]').change(function () { let valutazione; for (let i = 1; i < 6; i++) { if (($("#star" + i + "a").is(':checked'))) { valutazione = $("#star" + i + "a").val(); } } if (!elencoServizi.includes($("#hdnAbsoluteUrl").val())) { if (valutazione < 4) { $("#change_on_star_change_title").html(""); $("#change_on_star_change_title").html("Dove hai incontrato le maggiori difficoltà?"); $("#change_on_star_change_title").data("element", "feedback-rating-negative"); $("#change_on_star_change_options").empty() let stringaoptions = ` <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-1"> <label for="radio-1" data-element="feedback-rating-answer">Alcune indicazioni non erano chiare</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-2"> <label for="radio-2" data-element="feedback-rating-answer">Alcune indicazioni non erano corrette</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-3"> <label for="radio-3" data-element="feedback-rating-answer">Non capivo se quello che facevo era corretto</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-4"> <label for="radio-4" data-element="feedback-rating-answer">Ho avuto problemi tecnici</label> </div> `; $("#change_on_star_change_options").html(stringaoptions) } else { $("#change_on_star_change_title").html(""); $("#change_on_star_change_title").html("Quali sono stati gli aspetti che hai preferito?"); $("#change_on_star_change_options").empty() let stringaoptions = ` <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-1"> <label for="radio-1" data-element="feedback-rating-answer">Le indicazioni erano chiare</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-2"> <label for="radio-2" data-element="feedback-rating-answer">Le indicazioni erano complete</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-3"> <label for="radio-3" data-element="feedback-rating-answer">Capivo sempre che stavo procedendo correttamente</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-4"> <label for="radio-4" data-element="feedback-rating-answer">Non ho avuto problemi tecnici</label> </div> `; $("#change_on_star_change_options").html(stringaoptions) } } else if (valutazione < 4) { $("#change_on_star_change_title").html(""); $("#change_on_star_change_title").html("Dove hai incontrato le maggiori difficoltà?"); $("#change_on_star_change_options").empty() let stringaoptions = ` <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-1"> <label for="radio-1" data-element="feedback-rating-answer">A volte le indicazioni non erano chiare</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-2"> <label for="radio-2" data-element="feedback-rating-answer">A volte le indicazioni non erano complete</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-3"> <label for="radio-3" data-element="feedback-rating-answer">A volte non capivo se stavo precedendo correttamente</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-4"> <label for="radio-4" data-element="feedback-rating-answer">Ho avuto problemi tecnici</label> </div> `; $("#change_on_star_change_options").html(stringaoptions) } else { $("#change_on_star_change_title").html(""); $("#change_on_star_change_title").html("Quali sono stati gli aspetti che hai preferito?"); $("#change_on_star_change_options").empty() let stringaoptions = ` <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-1"> <label for="radio-1" data-element="feedback-rating-answer">Le indicazioni erano chiare</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-2"> <label for="radio-2" data-element="feedback-rating-answer">Le indicazioni erano complete</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-3"> <label for="radio-3" data-element="feedback-rating-answer">Capivo sempre che stavo precedendo correttamente</label> </div> <div class="radio-body border-bottom border-light cmp-radio-list__item"> <input name="rating" type="radio" id="radio-4"> <label for="radio-4" data-element="feedback-rating-answer">Non ho avuto problemi tecnici</label> </div> `; $("#change_on_star_change_options").html(stringaoptions) } }); /*for (let i = 1; i < 6; i++) { if (($("#star" + i + "a").is(':checked'))) { valutazione = $("#star" + i + "a").val(); } }*/ //--------------------------------// $("#final_valuta").on('classChange', function () { console.log("Cambiato"); }); //===== MODAL DELLE MODIFICHE ======= $(".salva_modal").click(function () { $("#cambia").contents().find("#btn_salva").click(); //$("#cambia").contents().find(".main_content").addClass("blurred"); //$("#cambia").contents().find("#loading_overlay").fadeIn("500"); }); $("#modalright").on("hidden.bs.modal", function () { location.reload(); }); $(".modifica_frontend").click(function () { var src = $(this).data("iframe"); $("#cambia").attr('src', src); $("#modalright").modal("toggle"); }); $(".elimina_frontend").click(function () { if (confirm("Sei sicuro di voler eliminare l'elemento selezionato? L'azione sarà irreversibile!")) { var src = $(this).data("iframe"); $("#cambia").attr('src', src); $("#modalright").modal("toggle"); } }); $(".aggiungi_frontend").click(function () { var src = $(this).data("iframe"); $("#cambia").attr('src', src); $("#modalright").modal("toggle"); }); //===== MODAL DELLE MODIFICHE ======= $("#topcontrol").hide(); //Popover solo su grandi schermi, su smartphone "ingombra" troppo if(window.screen.width > 768) var popover = new bootstrap.Popover($(".btn_dislessia"), {}); $(".btn_dislessia").on("click", function () { $.ajax({ type: "POST", url: "/services/v1/ServiceMethod.aspx/SetDislessia", contentType: "application/json; charset=utf-8", data: "", dataType: "json", success: function (data) { console.log(data); if (data.d == 'disattiva') { $("body").removeClass("dislessia"); $(".btn_dislessia").html(`<span class="rounded-icon" aria-hidden="true"> <svg class="icon icon-primary"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-password-visible"></use> </svg> </span> <span class="d-none d-lg-block text-inline">Utenti con dislessia</span`); } else { $("body").addClass("dislessia"); $(".btn_dislessia").html(`<span class="rounded-icon" aria-hidden="true"> <svg class="icon icon-primary"> <use xlink:href="/assets/bootstrap-italia/dist/svg/sprites.svg#it-password-visible"></use> </svg> </span> <span class="d-none d-lg-block text-inline">Versione standard</span`); } }, error: function (request, error) { console.log("Request: " + JSON.stringify(request)); } }); }); //Fix del problema che su ios devi cliccare i links due volte if (hasTouch()) { // remove all the :hover stylesheets try { // prevent exception on browsers not supporting DOM styleSheets properly for (var si in document.styleSheets) { var styleSheet = document.styleSheets[si]; if (!styleSheet.rules) continue; for (var ri = styleSheet.rules.length - 1; ri >= 0; ri--) { if (!styleSheet.rules[ri].selectorText) continue; if (styleSheet.rules[ri].selectorText.match(':hover')) { styleSheet.deleteRule(ri); } } } } catch (ex) { } } $('#txt_ricerca').keypress(function (e) { var key = e.which; if (key == 13) // the enter key code { avviaRicerca(); } }); $(".btn_ricerca_interna").on("click", function () { let searched = $(this).parent().parent().children(".txt_ricerca_interna").val(); let page = $(this).data("page"); if (searched == "") { alert("Inserire almeno un termine di ricerca!"); return false; } let ricerca = `/ita/risultati_ricerca.aspx?q=${searched}&page=${page}`; window.location.href = ricerca; }) }) function CaricaRandomRicerca() { $.ajax({ type: "GET", url: "/services/v1/ashx_master/carica_random_ricerca.ashx", contentType: "text/html; charset=utf-8", data: {}, success: function (data) { $("#elenco_servizi_random").html(data); }, error: function (request, error) { console.log("Request: " + JSON.stringify(request)); } }); } function close_edit_frame() { $("#cambia").attr('src', ""); $("#modalright").modal("toggle"); //location.reload(); setTimeout(function () { window.location.reload(); }); } function avviaRicerca() { if ($("#txt_ricerca").val() == "") { alert("Inserisci un termine di ricerca!"); return false; } let ricerca = $("#txt_ricerca").val(); window.location.href = "/ita/risultati_ricerca.aspx?q=" + encodeURIComponent(ricerca); } function hasTouch() { return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; } $(window).scroll(function () { if ($(window).scrollTop() > 300) { $("#topcontrol").show(); } else { $("#topcontrol").hide(); } }); $("#topcontrol").on('click', function (e) { e.preventDefault(); $('html, body').animate({ scrollTop: 0 }, '300'); }); function ValutaPassaggioFinale() { let valutazione = null; for (let i = 1; i < 6; i++) { if (($("#star" + i + "a").is(':checked'))) { valutazione = $("#star" + i + "a").val(); } } let Descrizione = null; for (let i = 1; i < 5; i++) { if (($("#radio-" + i).is(':checked'))) { Descrizione = $("label[for|='" + "radio-" + i + "']").text(); } } var valutazioneServizio = { Valutazione: valutazione, Descrizione: Descrizione, Dettagli: $("#formGroupExampleInputWithHelp").val(), URL: document.URL } if (valutazioneServizio.Valutazione != null && valutazioneServizio.Descrizione != null) { let stringURL = "/services/v1/valutazione/valutazione.ashx?valutazione=" + valutazioneServizio.Valutazione + " &descrizione=" + valutazioneServizio.Descrizione + "&URL=" + valutazioneServizio.URL; if (valutazioneServizio.Dettagli != null) { stringURL += "&dettagli=" + valutazioneServizio.Dettagli } $.ajax({ type: "POST", url: stringURL, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if (data = "ok") { const successNotificationFooter = new bootstrap.Notification(document.getElementById('successNotify-footer'), { timeout: 5000, }) successNotificationFooter.show(); return true; } else if (data = "nok") { const dbNotificationFooter = new bootstrap.Notification(document.getElementById('dbNotify-footer'), { timeout: 5000, }) dbNotificationFooter.show(); return false; } }, error: function (request, error) { console.log("Request: " + JSON.stringify(request)); return false; } }); } else { const errorNotificationFooter = new bootstrap.Notification(document.getElementById('errorNotify-footer'), { timeout: 5000, }) errorNotificationFooter.show(); return false; } } </script> <link rel="preload" href="/assets/css/font-awesome/css/font-awesome.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="/assets/css/font-awesome/css/font-awesome.min.css"></noscript> <link rel="preload" href="/assets/css/jquery.fancybox.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="/assets/css/jquery.fancybox.min.css"></noscript> </form> <style> .nascondi{display:none !important;} </style> <script type="text/javascript"> function doDemoThings(cookie) { $("iframe").each(function () { var src = $(this).attr('src'); if (src.indexOf('youtube') > -1) { if (src.indexOf("youtube-nocookie") == -1) { src.replace("www.youtube.com", "www.youtube-nocookie.com"); } $(this).addClass("nascondi"); } }); // Delete line below //cookie && (document.getElementById('cookie_val').innerHTML = JSON.stringify(cookie, null, 2)); //*** Scorrere qui il json per impostare i cookie desiderati... if (cookie != null) { //############# TERZE PARTI (You tube + Share) if (cookie.level.indexOf('Terze') == -1)//Disattivo Cookie { $("iframe").each(function () { var src = $(this).attr('src'); if (src != undefined && src.indexOf('youtube') > -1) { if (src.indexOf("youtube-nocookie") == -1) { src.replace("www.youtube.com", "www.youtube-nocookie.com"); } $(this).addClass("nascondi"); } }); $(".sharethis-inline-share-buttons").each(function () { $(this).addClass("nascondi"); }); } else { $("iframe").each(function () { var src = $(this).attr('src'); if (src != undefined && src.indexOf('youtube') > -1) { if (src != undefined && src.indexOf("youtube-nocookie") > -1) { src.replace("www.youtube-nocookie.com", "www.youtube.com"); } $(this).removeClass("nascondi"); } }); $(".sharethis-inline-share-buttons").each(function () { $(this).removeClass("nascondi"); }); } //############# MATOMO (Cookie Analitici) if (cookie.level.indexOf('matomo') == -1) //Disattivo Cookie { _paq.push(['disableCookies']); _paq.push(['trackPageView']); } else { var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "//www.pwstats.leonardoweb.eu/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '18']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); } } } $(document).ready(function () { doDemoThings(); var setting_cookies = ""; $(".footer-pageclose").append("<a style='cursor:pointer;font-size:20px;' data-cc='c-settings'>Impostazione cookie</a>"); }); </script> <script defer src="/mdg/cookies/cookieconsent.js"></script> <script defer src="/mdg/cookies/app.js"></script> </body> </html>