封装评查点的相关接口,完成评查点列表的简单搜索和查询

This commit is contained in:
2025-04-02 19:17:44 +08:00
parent 706cea8705
commit 2bde2bd76e
41 changed files with 11174 additions and 609 deletions
@@ -0,0 +1,123 @@
/* Compatability shim for jQuery and underscores.js.
*
* Copyright Sphinx contributors
* Released under the two clause BSD licence
*/
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
+3
View File
@@ -0,0 +1,3 @@
<!-- saved from url=(1905)https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-8543159550507237&output=html&adk=1812271804&adf=3025194257&abgtt=6&lmt=1742918816&plat=1%3A16777216%2C2%3A16777216%2C3%3A16%2C4%3A16%2C9%3A134250504%2C16%3A8388608%2C17%3A32%2C24%3A32%2C25%3A32%2C30%3A1081344%2C32%3A32%2C41%3A32%2C42%3A32&format=0x0&url=https%3A%2F%2Fpostgrest.postgresql.ac.cn%2Fen%2Fv12%2Freferences%2Fapi%2Ftables_views.html&pra=5&wgl=1&aihb=0&asro=0&ailel=1~2~4~7~8~9~10~11~12~13~14~15~16~17~18~19~20~21~24~29~30~34&aiael=1~2~3~4~7~8~9~10~11~12~13~14~15~16~17~18~19~20~21~24~29~30~34&aicel=33~38&aifxl=29_18~30_19&aiixl=29_5~30_6&itsi=2&aiapm=0.15&aiapmi=0.33938&aiact=0.6&ailct=0.65&uach=WyJXaW5kb3dzIiwiMTUuMC4wIiwieDg2IiwiIiwiMTM0LjAuNjk5OC4xNzgiLG51bGwsMCxudWxsLCI2NCIsW1siQ2hyb21pdW0iLCIxMzQuMC42OTk4LjE3OCJdLFsiTm90OkEtQnJhbmQiLCIyNC4wLjAuMCJdLFsiR29vZ2xlIENocm9tZSIsIjEzNC4wLjY5OTguMTc4Il1dLDBd&dt=1743586875473&bpp=9&bdt=18&idt=42&shv=r20250401&mjsv=m202503270101&ptt=9&saldr=aa&abxe=1&cookie=ID%3D3cc7d08ea74aaacf%3AT%3D1743563350%3ART%3D1743586695%3AS%3DALNI_MYbZfLN193La06gpdGbWGcLF-geyQ&gpic=UID%3D0000100517b5f12e%3AT%3D1743563350%3ART%3D1743586695%3AS%3DALNI_MZ_DqSWmGT0F3xqdYcK-IpUUt7nyw&eo_id_str=ID%3De98a5540fe5f2598%3AT%3D1743563350%3ART%3D1743586695%3AS%3DAA-AfjZFwr_srXR4du2XMZLugW-_&nras=1&correlator=3071774986153&frm=20&pv=2&u_tz=480&u_his=34&u_h=1080&u_w=1920&u_ah=1032&u_aw=1920&u_cd=24&u_sd=1&dmc=8&adx=-12245933&ady=-12245933&biw=1784&bih=872&scr_x=0&scr_y=0&eid=95355972%2C95355974%2C31091240%2C42531705%2C95353387%2C95354562%2C95356499%2C95356505%2C31091407%2C31089210%2C95356787%2C95356928&oid=2&pvsid=2918862569797426&tmod=1115595993&uas=0&nvt=1&fsapi=1&fc=1920&brdim=24%2C148%2C24%2C148%2C1920%2C0%2C1815%2C967%2C1799%2C872&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=32768&bc=31&bz=1.01&td=1&tdf=2&psd=W251bGwsW251bGwsbnVsbCxudWxsLCJkZXByZWNhdGVkX2thbm9uIl0sbnVsbCwxXQ..&nt=1&ifi=1&uci=a!1&fsb=1&dtd=56 -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script>var apcnf = '{"googMsgType":"apcnf","config":"[[],[],null,null,[],null,[],null,null,null,null,null,null,null,null,null,null,[1,null,null,[]],null,null,null,[\\\"zh-CN\\\"],null,null,null,null,null,null,null,null,null,null,[[\\\"\\\\u5c55\\\\u5f00/\\\\u6536\\\\u8d77\\\\u5de5\\\\u5177\\\\u680f\\\",\\\"\\\\u663e\\\\u793a/\\\\u9690\\\\u85cf\\\\u9690\\\\u79c1\\\\u8bbe\\\\u7f6e\\\\u548c\\\\u6cd5\\\\u5f8b\\\\u8bbe\\\\u7f6e\\\",\\\"\\\\u5173\\\\u95ed\\\\u663e\\\\u793a\\\\u9690\\\\u79c1\\\\u8bbe\\\\u7f6e\\\\u548c\\\\u6cd5\\\\u5f8b\\\\u8bbe\\\\u7f6e\\\"]]]"}';window.parent.postMessage(apcnf, '*');</script></head><body marginwidth="0" marginheight="0"></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+95
View File
@@ -0,0 +1,95 @@
/* Copy buttons */
button.copybtn {
position: absolute;
display: flex;
top: .3em;
right: .3em;
width: 1.7em;
height: 1.7em;
opacity: 0;
transition: opacity 0.3s, border .3s, background-color .3s;
user-select: none;
padding: 0;
border: none;
outline: none;
border-radius: 0.4em;
/* The colors that GitHub uses */
border: #1b1f2426 1px solid;
background-color: #f6f8fa;
color: #57606a;
}
button.copybtn.success {
border-color: #22863a;
color: #22863a;
}
button.copybtn svg {
stroke: currentColor;
width: 1.5em;
height: 1.5em;
padding: 0.1em;
}
div.highlight {
position: relative;
}
/* Show the copybutton */
.highlight:hover button.copybtn, button.copybtn.success {
opacity: 1;
}
.highlight button.copybtn:hover {
background-color: rgb(235, 235, 235);
}
.highlight button.copybtn:active {
background-color: rgb(187, 187, 187);
}
/**
* A minimal CSS-only tooltip copied from:
* https://codepen.io/mildrenben/pen/rVBrpK
*
* To use, write HTML like the following:
*
* <p class="o-tooltip--left" data-tooltip="Hey">Short</p>
*/
.o-tooltip--left {
position: relative;
}
.o-tooltip--left:after {
opacity: 0;
visibility: hidden;
position: absolute;
content: attr(data-tooltip);
padding: .2em;
font-size: .8em;
left: -.2em;
background: grey;
color: white;
white-space: nowrap;
z-index: 2;
border-radius: 2px;
transform: translateX(-102%) translateY(0);
transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1);
}
.o-tooltip--left:hover:after {
display: block;
opacity: 1;
visibility: visible;
transform: translateX(-100%) translateY(0);
transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1);
transition-delay: .5s;
}
/* By default the copy button shouldn't show up when printing a page */
@media print {
button.copybtn {
display: none;
}
}
+248
View File
@@ -0,0 +1,248 @@
// Localization support
const messages = {
'en': {
'copy': 'Copy',
'copy_to_clipboard': 'Copy to clipboard',
'copy_success': 'Copied!',
'copy_failure': 'Failed to copy',
},
'es' : {
'copy': 'Copiar',
'copy_to_clipboard': 'Copiar al portapapeles',
'copy_success': '¡Copiado!',
'copy_failure': 'Error al copiar',
},
'de' : {
'copy': 'Kopieren',
'copy_to_clipboard': 'In die Zwischenablage kopieren',
'copy_success': 'Kopiert!',
'copy_failure': 'Fehler beim Kopieren',
},
'fr' : {
'copy': 'Copier',
'copy_to_clipboard': 'Copier dans le presse-papier',
'copy_success': 'Copié !',
'copy_failure': 'Échec de la copie',
},
'ru': {
'copy': 'Скопировать',
'copy_to_clipboard': 'Скопировать в буфер',
'copy_success': 'Скопировано!',
'copy_failure': 'Не удалось скопировать',
},
'zh-CN': {
'copy': '复制',
'copy_to_clipboard': '复制到剪贴板',
'copy_success': '复制成功!',
'copy_failure': '复制失败',
},
'it' : {
'copy': 'Copiare',
'copy_to_clipboard': 'Copiato negli appunti',
'copy_success': 'Copiato!',
'copy_failure': 'Errore durante la copia',
}
}
let locale = 'en'
if( document.documentElement.lang !== undefined
&& messages[document.documentElement.lang] !== undefined ) {
locale = document.documentElement.lang
}
let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT;
if (doc_url_root == '#') {
doc_url_root = '';
}
/**
* SVG files for our copy buttons
*/
let iconCheck = `<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-check" width="44" height="44" viewBox="0 0 24 24" stroke-width="2" stroke="#22863a" fill="none" stroke-linecap="round" stroke-linejoin="round">
<title>${messages[locale]['copy_success']}</title>
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M5 12l5 5l10 -10" />
</svg>`
// If the user specified their own SVG use that, otherwise use the default
let iconCopy = ``;
if (!iconCopy) {
iconCopy = `<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-copy" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000" fill="none" stroke-linecap="round" stroke-linejoin="round">
<title>${messages[locale]['copy_to_clipboard']}</title>
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<rect x="8" y="8" width="12" height="12" rx="2" />
<path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2" />
</svg>`
}
/**
* Set up copy/paste for code blocks
*/
const runWhenDOMLoaded = cb => {
if (document.readyState != 'loading') {
cb()
} else if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', cb)
} else {
document.attachEvent('onreadystatechange', function() {
if (document.readyState == 'complete') cb()
})
}
}
const codeCellId = index => `codecell${index}`
// Clears selected text since ClipboardJS will select the text when copying
const clearSelection = () => {
if (window.getSelection) {
window.getSelection().removeAllRanges()
} else if (document.selection) {
document.selection.empty()
}
}
// Changes tooltip text for a moment, then changes it back
// We want the timeout of our `success` class to be a bit shorter than the
// tooltip and icon change, so that we can hide the icon before changing back.
var timeoutIcon = 2000;
var timeoutSuccessClass = 1500;
const temporarilyChangeTooltip = (el, oldText, newText) => {
el.setAttribute('data-tooltip', newText)
el.classList.add('success')
// Remove success a little bit sooner than we change the tooltip
// So that we can use CSS to hide the copybutton first
setTimeout(() => el.classList.remove('success'), timeoutSuccessClass)
setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon)
}
// Changes the copy button icon for two seconds, then changes it back
const temporarilyChangeIcon = (el) => {
el.innerHTML = iconCheck;
setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon)
}
const addCopyButtonToCodeCells = () => {
// If ClipboardJS hasn't loaded, wait a bit and try again. This
// happens because we load ClipboardJS asynchronously.
if (window.ClipboardJS === undefined) {
setTimeout(addCopyButtonToCodeCells, 250)
return
}
// Add copybuttons to all of our code cells
const COPYBUTTON_SELECTOR = 'div.highlight pre';
const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR)
codeCells.forEach((codeCell, index) => {
const id = codeCellId(index)
codeCell.setAttribute('id', id)
const clipboardButton = id =>
`<button class="copybtn o-tooltip--left" data-tooltip="${messages[locale]['copy']}" data-clipboard-target="#${id}">
${iconCopy}
</button>`
codeCell.insertAdjacentHTML('afterend', clipboardButton(id))
})
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
/**
* Removes excluded text from a Node.
*
* @param {Node} target Node to filter.
* @param {string} exclude CSS selector of nodes to exclude.
* @returns {DOMString} Text from `target` with text removed.
*/
function filterText(target, exclude) {
const clone = target.cloneNode(true); // clone as to not modify the live DOM
if (exclude) {
// remove excluded nodes
clone.querySelectorAll(exclude).forEach(node => node.remove());
}
return clone.innerText;
}
// Callback when a copy button is clicked. Will be passed the node that was clicked
// should then grab the text and replace pieces of text that shouldn't be used in output
function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") {
var regexp;
var match;
// Do we check for line continuation characters and "HERE-documents"?
var useLineCont = !!lineContinuationChar
var useHereDoc = !!hereDocDelim
// create regexp to capture prompt and remaining line
if (isRegexp) {
regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)')
} else {
regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)')
}
const outputLines = [];
var promptFound = false;
var gotLineCont = false;
var gotHereDoc = false;
const lineGotPrompt = [];
for (const line of textContent.split('\n')) {
match = line.match(regexp)
if (match || gotLineCont || gotHereDoc) {
promptFound = regexp.test(line)
lineGotPrompt.push(promptFound)
if (removePrompts && promptFound) {
outputLines.push(match[2])
} else {
outputLines.push(line)
}
gotLineCont = line.endsWith(lineContinuationChar) & useLineCont
if (line.includes(hereDocDelim) & useHereDoc)
gotHereDoc = !gotHereDoc
} else if (!onlyCopyPromptLines) {
outputLines.push(line)
} else if (copyEmptyLines && line.trim() === '') {
outputLines.push(line)
}
}
// If no lines with the prompt were found then just use original lines
if (lineGotPrompt.some(v => v === true)) {
textContent = outputLines.join('\n');
}
// Remove a trailing newline to avoid auto-running when pasting
if (textContent.endsWith("\n")) {
textContent = textContent.slice(0, -1)
}
return textContent
}
var copyTargetText = (trigger) => {
var target = document.querySelector(trigger.attributes['data-clipboard-target'].value);
// get filtered text
let exclude = '.linenos';
let text = filterText(target, exclude);
return formatCopyText(text, '', false, true, true, true, '', '')
}
// Initialize with a callback so we can modify the text before copy
const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText})
// Update UI with error/success messages
clipboard.on('success', event => {
clearSelection()
temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success'])
temporarilyChangeIcon(event.trigger)
})
clipboard.on('error', event => {
temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure'])
})
}
runWhenDOMLoaded(addCopyButtonToCodeCells)
+152
View File
@@ -0,0 +1,152 @@
.wy-nav-content {
max-width: initial;
}
#postgrest-documentation > h1 {
display: none;
}
div.wy-menu.rst-pro {
display: none !important;
}
div.highlight {
background: #fff !important;
}
div.line-block {
margin-bottom: 0px !important;
}
#sponsors {
text-align: center;
}
#sponsors h2 {
text-align: left;
}
#sponsors img{
margin: 10px;
width: 13em; /* ".. image::" does not apply width properly to SVGs */
}
#thanks{
text-align: center;
}
#thanks img{
margin: 10px;
}
#thanks h2{
text-align: left;
}
#thanks p{
text-align: left;
}
#thanks ul{
text-align: left;
}
.image-container {
max-width: 800px;
display: block;
margin-left: auto;
margin-right: auto;
margin-bottom: 24px;
}
.wy-table-responsive table td {
white-space: normal !important;
}
.wy-table-responsive {
overflow: visible !important;
}
#tutorials span.caption-text {
display: none;
}
#references span.caption-text {
display: none;
}
#explanations span.caption-text {
display: none;
}
#how-tos span.caption-text {
display: none;
}
#ecosystem span.caption-text {
display: none;
}
#integrations span.caption-text {
display: none;
}
#api span.caption-text {
display: none;
}
/* Tweaks for dark mode from extension: sphinx-rtd-dark-theme */
html[data-theme="dark"] .highlight {
background-color: #17181c !important;
}
html[data-theme="dark"] .sphinx-tabs-tab {
color: var(--dark-link-color);
}
html[data-theme="dark"] .sphinx-tabs-panel {
border: 1px solid #404040;
border-top: 0;
background: #141414;
}
html[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] {
border: 1px solid #404040;
border-bottom: 1px solid #141414;
background-color: #141414;
}
html[data-theme="dark"] [role="tablist"] {
border-bottom: 1px solid #404040;
}
html[data-theme="dark"] .btn-neutral {
color: white !important;
}
html[data-theme="dark"] .img-dark {
display: inline;
}
html:not([data-theme="dark"]) .img-dark {
display: none;
}
html[data-theme="dark"] .img-light {
display: none;
}
html:not([data-theme="dark"]) .img-light {
display: inline;
}
html[data-theme="dark"] .img-translucent img {
background-color: #cccccc;
}
.img-translucent img {
transition: background-color 0.3s;
margin-bottom: 24px;
}
+521
View File
@@ -0,0 +1,521 @@
:root {
--dark-text-color: #c1c1c1;
--dark-link-color: #249ee8;
}
html[data-theme="dark"] body {
color: #bfbfbf;
}
html[data-theme="dark"] .wy-nav-content-wrap {
background-color: #101010;
}
html[data-theme="dark"] .wy-nav-content {
background-color: #141414;
}
html[data-theme="dark"] .section {
color: var(--dark-text-color);
}
html[data-theme="dark"] .highlight {
background-color: #17181c;
}
html[data-theme="dark"] .highlight .nn {
color: var(--dark-text-color);
}
html[data-theme="dark"] .highlight .nb {
color: #8bb8df;
}
html[data-theme="dark"] .highlight .nv {
color: #40ffff;
}
html[data-theme="dark"] .highlight .kn,
html[data-theme="dark"] .highlight .kc,
html[data-theme="dark"] .highlight .k {
color: #41c2ea;
}
html[data-theme="dark"] .highlight .s1,
html[data-theme="dark"] .highlight .s2 {
color: #b3e87f;
}
html[data-theme="dark"] .highlight .nt {
color: #ccb350;
}
html[data-theme="dark"] .highlight .c1 {
color: #686868;
}
html[data-theme="dark"] .highlight .hll {
background-color: #002c4d;
}
html[data-theme="dark"] .rst-content div[class^="highlight"] {
border-color: #1a1a1a;
}
html[data-theme="dark"] .wy-nav-content a,
html[data-theme="dark"] .wy-nav-content a:visited {
color: var(--dark-link-color);
}
html[data-theme="dark"] .btn-neutral {
background-color: #17181c !important;
}
html[data-theme="dark"] .btn-neutral:hover {
background-color: #101114 !important;
}
html[data-theme="dark"] .btn-neutral:visited {
color: #c1c1c1 !important;
}
html[data-theme="dark"] .btn {
box-shadow: none;
}
html[data-theme="dark"] footer {
color: #bdbdbd;
}
html[data-theme="dark"] .wy-nav-side {
background-color: #0d0d0d;
}
html[data-theme="dark"] .wy-menu-vertical li.current {
background-color: #141414;
}
html[data-theme="dark"] .wy-menu-vertical li.current > a,
html[data-theme="dark"] .wy-menu-vertical li.on a {
background-color: #141415;
color: var(--dark-text-color);
}
html[data-theme="dark"] .wy-menu-vertical li.toctree-l1.current > a,
html[data-theme="dark"] .wy-menu-vertical li.current a {
border-color: #0b0c0d;
}
html[data-theme="dark"] .wy-menu-vertical li.current a {
color: #bbb;
}
html[data-theme="dark"] .wy-menu-vertical li.current a:hover {
background-color: #222;
}
html[data-theme="dark"] .wy-menu-vertical a:hover,
html[data-theme="dark"] .wy-menu-vertical li.current > a:hover,
html[data-theme="dark"] .wy-menu-vertical li.on a:hover {
background-color: #1e1e1e;
}
html[data-theme="dark"] .wy-menu-vertical li.toctree-l2.current > a,
html[data-theme="dark"]
.wy-menu-vertical
li.toctree-l2.current
li.toctree-l3
> a {
background-color: #18181a;
}
html[data-theme="dark"] .wy-side-nav-search {
background-color: #0b152d;
}
html[data-theme="dark"] .wy-side-nav-search .wy-dropdown > a,
html[data-theme="dark"] .wy-side-nav-search > a {
color: #ddd;
}
html[data-theme="dark"] .wy-side-nav-search input[type="text"] {
border-color: #111;
background-color: #141414;
color: var(--dark-text-color);
}
html[data-theme="dark"] .theme-switcher {
background-color: #0b0c0d;
color: var(--dark-text-color);
}
html[data-theme="dark"].writer-html4 .rst-content dl:not(.docutils) > dt,
html[data-theme="dark"].writer-html5
.rst-content
dl[class]:not(.option-list):not(.field-list):not(.footnote):not(
.glossary
):not(.simple)
> dt {
background-color: #0b0b0b;
color: #007dce;
border-color: #282828;
}
html[data-theme="dark"] .rst-content code,
html[data-theme="dark"] .rst-content tt {
color: var(--dark-text-color);
}
html[data-theme="dark"].writer-html4
.rst-content
dl:not(.docutils)
dl:not(.field-list)
> dt,
html[data-theme="dark"].writer-html5
.rst-content
dl[class]:not(.option-list):not(.field-list):not(.footnote):not(
.glossary
):not(.simple)
dl:not(.field-list)
> dt {
background-color: #0f0f0f;
color: #959595;
border-color: #2b2b2b;
}
html[data-theme="dark"] .rst-content code,
html[data-theme="dark"] .rst-content tt,
html[data-theme="dark"] code {
background-color: #2d2d2d;
border-color: #1c1c1c;
}
html[data-theme="dark"] .rst-content code.xref,
html[data-theme="dark"] .rst-content tt.xref,
html[data-theme="dark"] a .rst-content code,
html[data-theme="dark"] a .rst-content tt {
color: #cecece;
}
html[data-theme="dark"] .rst-content .hint,
html[data-theme="dark"] .rst-content .important,
html[data-theme="dark"] .rst-content .tip,
html[data-theme="dark"] .rst-content .wy-alert-success.admonition,
html[data-theme="dark"] .rst-content .wy-alert-success.admonition-todo,
html[data-theme="dark"] .rst-content .wy-alert-success.attention,
html[data-theme="dark"] .rst-content .wy-alert-success.caution,
html[data-theme="dark"] .rst-content .wy-alert-success.danger,
html[data-theme="dark"] .rst-content .wy-alert-success.error,
html[data-theme="dark"] .rst-content .wy-alert-success.note,
html[data-theme="dark"] .rst-content .wy-alert-success.seealso,
html[data-theme="dark"] .rst-content .wy-alert-success.warning,
html[data-theme="dark"] .wy-alert.wy-alert-success {
background-color: #00392e;
}
html[data-theme="dark"] .rst-content .hint .admonition-title,
html[data-theme="dark"] .rst-content .hint .wy-alert-title,
html[data-theme="dark"] .rst-content .important .admonition-title,
html[data-theme="dark"] .rst-content .important .wy-alert-title,
html[data-theme="dark"] .rst-content .tip .admonition-title,
html[data-theme="dark"] .rst-content .tip .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.admonition-todo
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.admonition-todo
.wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.admonition
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.admonition
.wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.attention
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.attention
.wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.caution
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-success.caution .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-success.danger .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-success.danger .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-success.error .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-success.error .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-success.note .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-success.note .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.seealso
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-success.seealso .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-success.warning
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-success.warning .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert.wy-alert-success
.admonition-title,
html[data-theme="dark"]
.wy-alert.wy-alert-success
.rst-content
.admonition-title,
html[data-theme="dark"] .wy-alert.wy-alert-success .wy-alert-title {
background-color: #006a56;
}
html[data-theme="dark"] .rst-content .admonition,
html[data-theme="dark"] .rst-content .note,
html[data-theme="dark"] .rst-content .seealso,
html[data-theme="dark"] .rst-content .wy-alert-info.admonition,
html[data-theme="dark"] .rst-content .wy-alert-info.admonition-todo,
html[data-theme="dark"] .rst-content .wy-alert-info.attention,
html[data-theme="dark"] .rst-content .wy-alert-info.caution,
html[data-theme="dark"] .rst-content .wy-alert-info.danger,
html[data-theme="dark"] .rst-content .wy-alert-info.error,
html[data-theme="dark"] .rst-content .wy-alert-info.hint,
html[data-theme="dark"] .rst-content .wy-alert-info.important,
html[data-theme="dark"] .rst-content .wy-alert-info.tip,
html[data-theme="dark"] .rst-content .wy-alert-info.warning,
html[data-theme="dark"] .wy-alert.wy-alert-info {
background-color: #002c4d;
}
html[data-theme="dark"] .rst-content .admonition .admonition-title,
html[data-theme="dark"] .rst-content .note .admonition-title,
html[data-theme="dark"] .rst-content .note .wy-alert-title,
html[data-theme="dark"] .rst-content .seealso .admonition-title,
html[data-theme="dark"] .rst-content .seealso .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-info.admonition-todo
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-info.admonition-todo
.wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-info.admonition
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.admonition .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.attention .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.attention .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.caution .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.caution .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.danger .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.danger .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.error .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.error .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.hint .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.hint .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.important .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.important .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.tip .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.tip .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-info.warning .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-info.warning .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert.wy-alert-info .admonition-title,
html[data-theme="dark"] .wy-alert.wy-alert-info .rst-content .admonition-title,
html[data-theme="dark"] .wy-alert.wy-alert-info .wy-alert-title {
background-color: #004a7b;
}
html[data-theme="dark"] .rst-content .admonition-todo,
html[data-theme="dark"] .rst-content .attention,
html[data-theme="dark"] .rst-content .caution,
html[data-theme="dark"] .rst-content .warning,
html[data-theme="dark"] .rst-content .wy-alert-warning.admonition,
html[data-theme="dark"] .rst-content .wy-alert-warning.danger,
html[data-theme="dark"] .rst-content .wy-alert-warning.error,
html[data-theme="dark"] .rst-content .wy-alert-warning.hint,
html[data-theme="dark"] .rst-content .wy-alert-warning.important,
html[data-theme="dark"] .rst-content .wy-alert-warning.note,
html[data-theme="dark"] .rst-content .wy-alert-warning.seealso,
html[data-theme="dark"] .rst-content .wy-alert-warning.tip,
html[data-theme="dark"] .wy-alert.wy-alert-warning {
background-color: #533500;
}
html[data-theme="dark"] .rst-content .admonition-todo .admonition-title,
html[data-theme="dark"] .rst-content .admonition-todo .wy-alert-title,
html[data-theme="dark"] .rst-content .attention .admonition-title,
html[data-theme="dark"] .rst-content .attention .wy-alert-title,
html[data-theme="dark"] .rst-content .caution .admonition-title,
html[data-theme="dark"] .rst-content .caution .wy-alert-title,
html[data-theme="dark"] .rst-content .warning .admonition-title,
html[data-theme="dark"] .rst-content .warning .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-warning.admonition
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-warning.admonition
.wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.danger .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.danger .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.error .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.error .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.hint .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.hint .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-warning.important
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-warning.important
.wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.note .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.note .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-warning.seealso
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.seealso .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.tip .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-warning.tip .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert.wy-alert-warning
.admonition-title,
html[data-theme="dark"]
.wy-alert.wy-alert-warning
.rst-content
.admonition-title,
html[data-theme="dark"] .wy-alert.wy-alert-warning .wy-alert-title {
background-color: #803b00;
}
html[data-theme="dark"] .rst-content .danger,
html[data-theme="dark"] .rst-content .error,
html[data-theme="dark"] .rst-content .wy-alert-danger.admonition,
html[data-theme="dark"] .rst-content .wy-alert-danger.admonition-todo,
html[data-theme="dark"] .rst-content .wy-alert-danger.attention,
html[data-theme="dark"] .rst-content .wy-alert-danger.caution,
html[data-theme="dark"] .rst-content .wy-alert-danger.hint,
html[data-theme="dark"] .rst-content .wy-alert-danger.important,
html[data-theme="dark"] .rst-content .wy-alert-danger.note,
html[data-theme="dark"] .rst-content .wy-alert-danger.seealso,
html[data-theme="dark"] .rst-content .wy-alert-danger.tip,
html[data-theme="dark"] .rst-content .wy-alert-danger.warning,
html[data-theme="dark"] .wy-alert.wy-alert-danger {
background-color: #82231a;
}
html[data-theme="dark"] .rst-content .danger .admonition-title,
html[data-theme="dark"] .rst-content .danger .wy-alert-title,
html[data-theme="dark"] .rst-content .error .admonition-title,
html[data-theme="dark"] .rst-content .error .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-danger.admonition-todo
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-danger.admonition-todo
.wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-danger.admonition
.admonition-title,
html[data-theme="dark"]
.rst-content
.wy-alert-danger.admonition
.wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-danger.attention
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.attention .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.caution .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.caution .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.hint .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.hint .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert-danger.important
.admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.important .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.note .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.note .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.seealso .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.seealso .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.tip .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.tip .wy-alert-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.warning .admonition-title,
html[data-theme="dark"] .rst-content .wy-alert-danger.warning .wy-alert-title,
html[data-theme="dark"]
.rst-content
.wy-alert.wy-alert-danger
.admonition-title,
html[data-theme="dark"]
.wy-alert.wy-alert-danger
.rst-content
.admonition-title,
html[data-theme="dark"] .wy-alert.wy-alert-danger .wy-alert-title {
background-color: #b9372b;
}
html[data-theme="dark"] .wy-nav-top {
background-color: #0b152d;
}
html[data-theme="dark"] .rst-content table.docutils thead,
html[data-theme="dark"] .rst-content table.field-list thead,
html[data-theme="dark"] .wy-table thead {
color: var(--dark-text-color);
}
html[data-theme="dark"]
.rst-content
table.docutils:not(.field-list)
tr:nth-child(2n-1)
td,
html[data-theme="dark"] .wy-table-backed,
html[data-theme="dark"] html[data-theme="dark"] .wy-table-odd td,
html[data-theme="dark"] .wy-table-striped tr:nth-child(2n-1) td {
background-color: #181818;
}
html[data-theme="dark"] .rst-content table.docutils td,
html[data-theme="dark"] .wy-table-bordered-all td,
html[data-theme="dark"].writer-html5 .rst-content table.docutils th,
html[data-theme="dark"] .rst-content table.docutils,
html[data-theme="dark"] .wy-table-bordered-all {
border-color: #262626;
}
html[data-theme="dark"] .rst-content table.docutils caption,
html[data-theme="dark"] .rst-content table.field-list caption,
html[data-theme="dark"] .wy-table caption {
color: var(--dark-text-color);
}
html[data-theme="dark"] .wy-menu-vertical li.toctree-l3.current > a,
html[data-theme="dark"]
.wy-menu-vertical
li.toctree-l3.current
li.toctree-l4
> a {
background-color: #18181a;
}
html[data-theme="dark"] .guilabel {
background-color: #343434;
border-color: #4d4d4d;
}
@@ -0,0 +1,13 @@
const loadTheme = () => {
let theme = localStorage.getItem('theme');
if (theme !== null) {
if (theme === 'dark')
document.documentElement.setAttribute('data-theme', 'dark');
} else {
localStorage.setItem('theme', 'light');
document.documentElement.setAttribute('data-theme', 'light');
}
};
loadTheme();
+156
View File
@@ -0,0 +1,156 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Base JavaScript utilities for all Sphinx HTML documentation.
*
* :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
"TEXTAREA",
"INPUT",
"SELECT",
"BUTTON",
]);
const _ready = (callback) => {
if (document.readyState !== "loading") {
callback();
} else {
document.addEventListener("DOMContentLoaded", callback);
}
};
/**
* Small JavaScript module for the documentation.
*/
const Documentation = {
init: () => {
Documentation.initDomainIndexTable();
Documentation.initOnKeyListeners();
},
/**
* i18n support
*/
TRANSLATIONS: {},
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
LOCALE: "unknown",
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext: (string) => {
const translated = Documentation.TRANSLATIONS[string];
switch (typeof translated) {
case "undefined":
return string; // no translation
case "string":
return translated; // translation exists
default:
return translated[0]; // (singular, plural) translation tuple exists
}
},
ngettext: (singular, plural, n) => {
const translated = Documentation.TRANSLATIONS[singular];
if (typeof translated !== "undefined")
return translated[Documentation.PLURAL_EXPR(n)];
return n === 1 ? singular : plural;
},
addTranslations: (catalog) => {
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
Documentation.PLURAL_EXPR = new Function(
"n",
`return (${catalog.plural_expr})`
);
Documentation.LOCALE = catalog.locale;
},
/**
* helper function to focus on search bar
*/
focusSearchBar: () => {
document.querySelectorAll("input[name=q]")[0]?.focus();
},
/**
* Initialise the domain index toggle buttons
*/
initDomainIndexTable: () => {
const toggler = (el) => {
const idNumber = el.id.substr(7);
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
if (el.src.substr(-9) === "minus.png") {
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
toggledRows.forEach((el) => (el.style.display = "none"));
} else {
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
toggledRows.forEach((el) => (el.style.display = ""));
}
};
const togglerElements = document.querySelectorAll("img.toggler");
togglerElements.forEach((el) =>
el.addEventListener("click", (event) => toggler(event.currentTarget))
);
togglerElements.forEach((el) => (el.style.display = ""));
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
},
initOnKeyListeners: () => {
// only install a listener if it is really needed
if (
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
)
return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.altKey || event.ctrlKey || event.metaKey) return;
if (!event.shiftKey) {
switch (event.key) {
case "ArrowLeft":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const prevLink = document.querySelector('link[rel="prev"]');
if (prevLink && prevLink.href) {
window.location.href = prevLink.href;
event.preventDefault();
}
break;
case "ArrowRight":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const nextLink = document.querySelector('link[rel="next"]');
if (nextLink && nextLink.href) {
window.location.href = nextLink.href;
event.preventDefault();
}
break;
}
}
// some keyboard layouts may need Shift to get /
switch (event.key) {
case "/":
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
Documentation.focusSearchBar();
event.preventDefault();
}
});
},
};
// quick alias for translations
const _ = Documentation.gettext;
_ready(Documentation.init);
@@ -0,0 +1,13 @@
const DOCUMENTATION_OPTIONS = {
VERSION: '',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
FILE_SUFFIX: '.html',
LINK_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true,
ENABLE_SEARCH_SHORTCUTS: true,
};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+69
View File
@@ -0,0 +1,69 @@
input[type='color'],
input[type='date'],
input[type='datetime-local'],
input[type='datetime'],
input[type='email'],
input[type='month'],
input[type='number'],
input[type='password'],
input[type='search'],
input[type='tel'],
input[type='text'],
input[type='time'],
input[type='url'],
input[type='week'] {
box-shadow: none;
}
.theme-switcher {
border-radius: 50%;
position: fixed;
right: 1.6em;
bottom: 1.4em;
z-index: 3;
border: none;
height: 2.2em;
width: 2.2em;
background-color: #fcfcfc;
font-size: 20px;
-webkit-box-shadow: 0px 3px 14px 4px rgba(0, 0, 0, 0.62);
box-shadow: 0px 3px 14px 4px rgba(0, 0, 0, 0.62);
color: #404040;
transition: all 0.3s ease-in-out;
}
body,
.wy-nav-content-wrap,
.wy-nav-content,
.section,
.highlight,
.rst-content div[class^='highlight'],
.wy-nav-content a,
.btn-neutral,
.btn,
footer,
.wy-nav-side,
.wy-menu-vertical li,
.wy-menu-vertical a,
.wy-side-nav-search .wy-dropdown,
.wy-side-nav-search a,
.wy-side-nav-search input,
html.writer-html4 .rst-content dl:not(.docutils) > dt,
html.writer-html5
.rst-content
dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)
> dt,
.rst-content code,
.rst-content tt,
html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list) > dt,
html.writer-html5
.rst-content
dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)
dl:not(.field-list)
> dt,
code,
.rst-content code.xref,
.rst-content tt.xref {
transition: all 0.2s ease-in-out;
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+75
View File
@@ -0,0 +1,75 @@
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #333333 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06287e } /* Name.Function.Magic */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
@@ -0,0 +1,302 @@
/* Left for CSS overrides we need to make in the future */
/* Fix badge on RTD Theme */
/* Please keep RTD badge displayed on your site */
.rst-versions.rst-badge {
display: block;
bottom: 50px;
/* Workaround for mkdocs which set a specific height for this element */
height: auto;
}
.rst-other-versions {
text-align: left;
}
.rst-other-versions a {
border: 0;
}
.rst-other-versions dl {
margin: 0;
}
.rtd-current-item {
font-weight: bold;
}
/* Fix RTD theme bottom margin */
.rst-content .line-block {
margin-bottom: 24px
}
/* Fix for nav bottom padding with flyout */
nav.wy-nav-side {
padding-bottom: 3em;
}
/* bookmark icon */
.bookmark-added-msg {display: none;}
.bookmark-active {display: none;}
.bookmark-inactive {display: none;}
/* Read the Docs promotional block, only applicable to RTD.org
To support sphinx_rtd_theme, a `wy-menu` element is added. Other themes are
targeted using the theme identifier and use custom elements instead of a CSS
framework html structure.
*/
div.ethical-sidebar,
div.ethical-footer {
display: block !important;
}
.ethical-sidebar,
.ethical-footer {
padding: 0.5em;
margin: 1em 0;
}
.ethical-sidebar img,
.ethical-footer img {
width: 120px;
height: 90px;
display: inline-block;
}
.ethical-sidebar .ethical-callout,
.ethical-footer .ethical-callout {
padding-top: 1em;
clear: both;
}
.ethical-sidebar .ethical-pixel,
.ethical-footer .ethical-pixel,
.ethical-fixedfooter .ethical-pixel {
display: none !important;
}
.ethical-sidebar .ethical-text,
.ethical-footer .ethical-text {
margin-top: 1em;
}
.ethical-sidebar .ethical-image-link,
.ethical-footer .ethical-image-link {
border: 0;
}
.ethical-sidebar,
.ethical-footer {
background-color: #eee;
border: 1px solid #ccc;
border-radius: 5px;
color: #0a0a0a;
font-size: 14px;
line-height: 20px;
}
/* Techstack badging */
.ethical-sidebar ul {
margin: 0 !important;
padding-left: 0;
list-style: none;
}
.ethical-sidebar ul li {
display: inline-block;
background-color: lightskyblue;
color: black;
padding: 0.25em 0.4em;
font-size: 75%;
font-weight: 700;
margin: 0.25em;
border-radius: 0.25rem;
text-align: center;
vertical-align: baseline;
white-space: nowrap;
line-height: 1.41;
}
.ethical-sidebar ul li:not(:last-child) {
margin-right: .25rem;
}
.ethical-sidebar a,
.ethical-sidebar a:visited,
.ethical-sidebar a:hover,
.ethical-sidebar a:active,
.ethical-footer a,
.ethical-footer a:visited,
.ethical-footer a:hover,
.ethical-footer a:active {
color: #0a0a0a;
text-decoration: none !important;
border-bottom: 0 !important;
}
.ethical-callout a {
color: #707070 !important;
text-decoration: none !important;
}
/* Sidebar promotions */
.ethical-sidebar {
text-align: center;
max-width: 300px;
margin-left: auto;
margin-right: auto;
}
/* Footer promotions */
.ethical-footer {
text-align: left;
font-size: 14px;
line-height: 20px;
}
.ethical-footer img {
float: right;
margin-left: 25px;
}
.ethical-footer .ethical-callout {
text-align: center;
}
.ethical-footer small {
font-size: 10px;
}
/* Fixed footer promotions */
.ethical-fixedfooter {
box-sizing: border-box;
position: fixed;
bottom: 0;
left: 0;
z-index: 100;
background-color: #eee;
border-top: 1px solid #bfbfbf;
font-size: 12px;
line-height: 1.5;
padding: 0.5em 1.5em;
text-align: center;
color: #404040;
width: 100%; /* Fallback for Opera Mini */
width: 100vw;
}
@media (min-width: 769px) {
/* Improve viewing on non-mobile */
.ethical-fixedfooter {
font-size: 13px;
padding: 1em 1.5em;
}
}
.ethical-fixedfooter .ethical-text:before {
margin-right: 4px;
padding: 2px 6px;
border-radius: 3px;
background-color: #4caf50;
color: #fff;
content: "Sponsored";
}
.ethical-fixedfooter .ethical-callout {
color: #999;
padding-left: 6px;
white-space: nowrap;
}
.ethical-fixedfooter a,
.ethical-fixedfooter a:hover,
.ethical-fixedfooter a:active,
.ethical-fixedfooter a:visited {
color: #404040;
text-decoration: none;
}
.ethical-fixedfooter .ethical-close {
position: absolute;
top: 0;
right: 5px;
font-size: 20px;
line-height: 20px;
}
/* RTD Theme specific customizations */
.wy-nav-side .ethical-rtd {
/* RTD theme doesn't correctly set the sidebar width */
max-width: 300px;
padding: 0 1em;
}
.ethical-rtd .ethical-sidebar {
/* RTD theme doesn't set sidebar text color */
color: #b3b3b3;
font-size: 14px;
line-height: 20px;
}
@media (min-width: 769px) {
/* Make sure the fixed footer ad is under the RTD theme version selector */
.wy-body-for-nav .ethical-fixedfooter {
padding-left: 300px;
}
}
/* Alabaster specific customizations */
.ethical-alabaster a.ethical-image-link {
/* Alabaster adds a border even to image links on hover */
border: 0 !important;
}
.ethical-alabaster hr {
/* Alabaster needs some extra spacing before the footer ad */
margin-top: 2em;
}
.ethical-alabaster::before {
/* Alabaster's search box above the ad is floating */
clear: both;
content: '';
display: table;
margin-top: 3em;
}
/* Dark theme */
.ethical-dark-theme .ethical-sidebar {
background-color: #4e4b4b;
border: 1px solid #a0a0a0;
color: #c2c2c2 !important;
}
.ethical-dark-theme a,
.ethical-dark-theme a:visited {
color: #e6e6e6 !important;
border-bottom: 0 !important;
}
.ethical-dark-theme .ethical-callout a {
color: #b3b3b3 !important;
}
/* Ad block nag */
.keep-us-sustainable {
padding: .5em;
margin: 1em auto;
text-align: center;
border: 1px dotted #8ECC4C;
max-width: 300px;
}
.keep-us-sustainable a,
.keep-us-sustainable a:hover,
.keep-us-sustainable a:visited {
text-decoration: none;
}
/* Read the Docs theme specific fixes */
.wy-nav-side .keep-us-sustainable {
margin: 1em 2em 1em 1em;
color: #b3b3b3;
}
.wy-nav-side .keep-us-sustainable a {
color: #efefef;
font-size: 14px;
line-height: 20px;
}
/* Margin between the search results */
.rtd_search_hits_spacing {
margin: 10px 0;
}
+3
View File
@@ -0,0 +1,3 @@
<!-- saved from url=(0011)about:blank -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body></body></html>
@@ -0,0 +1,154 @@
/* Highlighting utilities for Sphinx HTML documentation. */
"use strict";
const SPHINX_HIGHLIGHT_ENABLED = true
/**
* highlight a given string on a node by wrapping it in
* span elements with the given class name.
*/
const _highlight = (node, addItems, text, className) => {
if (node.nodeType === Node.TEXT_NODE) {
const val = node.nodeValue;
const parent = node.parentNode;
const pos = val.toLowerCase().indexOf(text);
if (
pos >= 0 &&
!parent.classList.contains(className) &&
!parent.classList.contains("nohighlight")
) {
let span;
const closestNode = parent.closest("body, svg, foreignObject");
const isInSVG = closestNode && closestNode.matches("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.classList.add(className);
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
const rest = document.createTextNode(val.substr(pos + text.length));
parent.insertBefore(
span,
parent.insertBefore(
rest,
node.nextSibling
)
);
node.nodeValue = val.substr(0, pos);
/* There may be more occurrences of search term in this node. So call this
* function recursively on the remaining fragment.
*/
_highlight(rest, addItems, text, className);
if (isInSVG) {
const rect = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect"
);
const bbox = parent.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute("class", className);
addItems.push({ parent: parent, target: rect });
}
}
} else if (node.matches && !node.matches("button, select, textarea")) {
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
}
};
const _highlightText = (thisNode, text, className) => {
let addItems = [];
_highlight(thisNode, addItems, text, className);
addItems.forEach((obj) =>
obj.parent.insertAdjacentElement("beforebegin", obj.target)
);
};
/**
* Small JavaScript module for the documentation.
*/
const SphinxHighlight = {
/**
* highlight the search words provided in localstorage in the text
*/
highlightSearchWords: () => {
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
// get and clear terms from localstorage
const url = new URL(window.location);
const highlight =
localStorage.getItem("sphinx_highlight_terms")
|| url.searchParams.get("highlight")
|| "";
localStorage.removeItem("sphinx_highlight_terms")
url.searchParams.delete("highlight");
window.history.replaceState({}, "", url);
// get individual terms from highlight string
const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
if (terms.length === 0) return; // nothing to do
// There should never be more than one element matching "div.body"
const divBody = document.querySelectorAll("div.body");
const body = divBody.length ? divBody[0] : document.querySelector("body");
window.setTimeout(() => {
terms.forEach((term) => _highlightText(body, term, "highlighted"));
}, 10);
const searchBox = document.getElementById("searchbox");
if (searchBox === null) return;
searchBox.appendChild(
document
.createRange()
.createContextualFragment(
'<p class="highlight-link">' +
'<a href="javascript:SphinxHighlight.hideSearchWords()">' +
_("Hide Search Matches") +
"</a></p>"
)
);
},
/**
* helper function to hide the search marks again
*/
hideSearchWords: () => {
document
.querySelectorAll("#searchbox .highlight-link")
.forEach((el) => el.remove());
document
.querySelectorAll("span.highlighted")
.forEach((el) => el.classList.remove("highlighted"));
localStorage.removeItem("sphinx_highlight_terms")
},
initEscapeListener: () => {
// only install a listener if it is really needed
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
SphinxHighlight.hideSearchWords();
event.preventDefault();
}
});
},
};
_ready(() => {
/* Do not call highlightSearchWords() when we are on the search page.
* It will highlight words from the *previous* search query.
*/
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
SphinxHighlight.initEscapeListener();
});
+90
View File
@@ -0,0 +1,90 @@
.sphinx-tabs {
margin-bottom: 1rem;
}
[role="tablist"] {
border-bottom: 1px solid #a0b3bf;
}
.sphinx-tabs-tab {
position: relative;
font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;
color: #1D5C87;
line-height: 24px;
margin: 0;
font-size: 16px;
font-weight: 400;
background-color: rgba(255, 255, 255, 0);
border-radius: 5px 5px 0 0;
border: 0;
padding: 1rem 1.5rem;
margin-bottom: 0;
}
.sphinx-tabs-tab[aria-selected="true"] {
font-weight: 700;
border: 1px solid #a0b3bf;
border-bottom: 1px solid white;
margin: -1px;
background-color: white;
}
.sphinx-tabs-tab:focus {
z-index: 1;
outline-offset: 1px;
}
.sphinx-tabs-panel {
position: relative;
padding: 1rem;
border: 1px solid #a0b3bf;
margin: 0px -1px -1px -1px;
border-radius: 0 0 5px 5px;
border-top: 0;
background: white;
}
.sphinx-tabs-panel.code-tab {
padding: 0.4rem;
}
.sphinx-tab img {
margin-bottom: 24 px;
}
/* Dark theme preference styling */
@media (prefers-color-scheme: dark) {
body[data-theme="auto"] .sphinx-tabs-panel {
color: white;
background-color: rgb(50, 50, 50);
}
body[data-theme="auto"] .sphinx-tabs-tab {
color: white;
background-color: rgba(255, 255, 255, 0.05);
}
body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] {
border-bottom: 1px solid rgb(50, 50, 50);
background-color: rgb(50, 50, 50);
}
}
/* Explicit dark theme styling */
body[data-theme="dark"] .sphinx-tabs-panel {
color: white;
background-color: rgb(50, 50, 50);
}
body[data-theme="dark"] .sphinx-tabs-tab {
color: white;
background-color: rgba(255, 255, 255, 0.05);
}
body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] {
border-bottom: 2px solid rgb(50, 50, 50);
background-color: rgb(50, 50, 50);
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,39 @@
const createThemeSwitcher = () => {
let btn = document.createElement('BUTTON');
btn.className = 'theme-switcher';
btn.id = 'themeSwitcher';
btn.innerHTML =
'<i id=themeMoon class="fa fa-moon-o"></i><i id=themeSun class="fa fa-sun-o"></i>';
document.body.appendChild(btn);
if (localStorage.getItem('theme') === 'dark') $('#themeMoon').hide(0);
else $('#themeSun').hide(0);
};
$(document).ready(() => {
createThemeSwitcher();
$('#themeSwitcher').click(switchTheme);
$('footer').html(
$('footer').html() +
'<a href="https://github.com/MrDogeBro/sphinx_rtd_dark_mode">Dark theme</a> provided by <a href="http://mrdogebro.com">MrDogeBro</a>.'
);
});
const switchTheme = () => {
if (localStorage.getItem('theme') === 'dark') {
localStorage.setItem('theme', 'light');
document.documentElement.setAttribute('data-theme', 'light');
$('#themeSun').fadeOut(200, () => {
$('#themeMoon').fadeIn(200);
});
} else {
localStorage.setItem('theme', 'dark');
document.documentElement.setAttribute('data-theme', 'dark');
$('#themeMoon').fadeOut(200, () => {
$('#themeSun').fadeIn(200);
});
}
};
+23
View File
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<!-- saved from url=(0090)https://googleads.g.doubleclick.net/pagead/html/r20250401/r20190131/zrt_lookup_fy2021.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script>
(function(){'use strict';/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
var p=this||self;function q(){var a=p.navigator;return a&&(a=a.userAgent)?a:""};function x(a,b){Array.prototype.forEach.call(a,b,void 0)};function y(a){y[" "](a);return a}y[" "]=function(){};var aa=q().toLowerCase().indexOf("webkit")!=-1&&q().indexOf("Edge")==-1;function ba(a){var b=window;b.addEventListener&&b.addEventListener("load",a,!1)};/*
Copyright Google LLC
SPDX-License-Identifier: Apache-2.0
*/
let z=globalThis.trustedTypes,B;function ca(){let a=null;if(!z)return a;try{const b=c=>c;a=z.createPolicy("goog#html",{createHTML:b,createScript:b,createScriptURL:b})}catch(b){}return a};var C=class{constructor(a){this.g=a}toString(){return this.g+""}};function D(a){if(a instanceof C)return a.g;throw Error("");};var da=RegExp("^(?:([^:/?#.]+):)?(?://(?:([^\\\\/?#]*)@)?([^\\\\/?#]*?)(?::([0-9]+))?(?=[\\\\/?#]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$");function E(a){try{var b;if(b=!!a&&a.location.href!=null)a:{try{y(a.foo);b=!0;break a}catch(c){}b=!1}return b}catch{return!1}}function F(a=!1){const b=[p.top],c=[];let d=0,f;for(;f=b[d++];){a&&!E(f)||c.push(f);try{if(f.frames)for(let e=0;e<f.frames.length&&b.length<1024;++e)b.push(f.frames[e])}catch{}}return c}function G(a,b){if(a)for(const c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(a[c],c,a)}function ea(a=document){return a.createElement("img")};function fa(a){p.google_image_requests||(p.google_image_requests=[]);const b=ea(p.document);b.src=a;p.google_image_requests.push(b)};let H=null;function ha(){if(!H)b:{var a=F();for(var b=0;b<a.length;b++)try{const c=a[b].frames.google_esf;if(c&&E(c)){H=c;break b}}catch(c){}H=null}(a=H)?((b=a.esf_propArray)||(b=a.esf_propArray={}),a=b):a=null;return a?.[2]};var J=window;var K=/#(R?S)-(.*)/,ma=/^(\d+)-(.*)/;var na=class{constructor(a,b){this.error=a;this.meta={};this.context=b.context;this.msg=b.message||"";this.id=b.id||"jserror"}};function L(a){let b=a.toString();a.name&&b.indexOf(a.name)==-1&&(b+=": "+a.name);a.message&&b.indexOf(a.message)==-1&&(b+=": "+a.message);if(a.stack)a:{a=a.stack;var c=b;try{a.indexOf(c)==-1&&(a=c+"\n"+a);let d;for(;a!=d;)d=a,a=a.replace(RegExp("((https?:/..*/)[^/:]*:\\d+(?:.|\n)*)\\2"),"$1");b=a.replace(RegExp("\n *","g"),"\n");break a}catch(d){b=c;break a}b=void 0}return b};const oa=RegExp("^https?://(\\w|-)+\\.cdn\\.ampproject\\.(net|org)(\\?|/|$)");var pa=class{constructor(a,b){this.g=a;this.h=b}},qa=class{constructor(a,b){this.url=a;this.g=!!b;this.depth=null}};let M=null;function ra(){const a=p.performance;return a&&a.now&&a.timing?Math.floor(a.now()+a.timing.navigationStart):Date.now()}function sa(){const a=p.performance;return a&&a.now?a.now():null};var ta=class{constructor(a,b){var c=sa()||ra();this.label=a;this.type=b;this.value=c;this.duration=0;this.taskId=this.slotId=void 0;this.uniqueId=Math.random()}};const N=p.performance,ua=!!(N&&N.mark&&N.measure&&N.clearMarks),Q=function(a){let b=!1,c;return function(){b||(c=a(),b=!0);return c}}(()=>{var a;if(a=ua){var b;a=window;if(M===null){M="";try{let c="";try{c=a.top.location.hash}catch(d){c=a.location.hash}c&&(M=(b=c.match(/\bdeid=([\d,]+)/))?b[1]:"")}catch(c){}}b=M;a=!!b.indexOf&&b.indexOf("1337")>=0}return a});function va(a){a&&N&&Q()&&(N.clearMarks(`goog_${a.label}_${a.uniqueId}_start`),N.clearMarks(`goog_${a.label}_${a.uniqueId}_end`))};function R(a,b){const c={};c[a]=b;return[c]}function wa(a,b,c,d,f){const e=[];G(a,(g,l)=>{(g=xa(g,b,c,d,f))&&e.push(`${l}=${g}`)});return e.join(b)}
function xa(a,b,c,d,f){if(a==null)return"";b=b||"&";c=c||",$";typeof c==="string"&&(c=c.split(""));if(a instanceof Array){if(d||(d=0),d<c.length){const e=[];for(let g=0;g<a.length;g++)e.push(xa(a[g],b,c,d+1,f));return e.join(c[d])}}else if(typeof a==="object")return f||(f=0),f<2?encodeURIComponent(wa(a,b,c,d,f+1)):"...";return encodeURIComponent(String(a))}function ya(a){let b=1;for(const c in a.h)c.length>b&&(b=c.length);return 3997-b-a.i.length-1}
function za(a,b){let c="https://pagead2.googlesyndication.com"+b,d=ya(a)-b.length;if(d<0)return"";a.g.sort((e,g)=>e-g);b=null;let f="";for(let e=0;e<a.g.length;e++){const g=a.g[e],l=a.h[g];for(let h=0;h<l.length;h++){if(!d){b=b==null?g:b;break}let m=wa(l[h],a.i,",$");if(m){m=f+m;if(d>=m.length){d-=m.length;c+=m;f=a.i;break}b=b==null?g:b}}}a="";b!=null&&(a=`${f}${"trn"}=${b}`);return c+a}var S=class{constructor(){this.i="&";this.h={};this.j=0;this.g=[]}};var Ba=class{constructor(a=null){this.l=T;this.h=a;this.g=null;this.i=!1;this.m=this.j}j(a,b,c,d,f){f=f||"jserror";let e=void 0;try{const t=new S;var g=t;g.g.push(1);g.h[1]=R("context",a);b.error&&b.meta&&b.id||(b=new na(b,{message:L(b)}));g=b;if(g.msg){b=t;var l=g.msg.substring(0,512);b.g.push(2);b.h[2]=R("msg",l)}var h=g.meta||{};l=h;if(this.g)try{this.g(l)}catch(n){}if(d)try{d(l)}catch(n){}d=t;h=[h];d.g.push(3);d.h[3]=h;var m;if(!(m=r)){d=p;h=[];l=null;do{var k=d;if(E(k)){var v=k.location.href;
l=k.document&&k.document.referrer||null}else v=l,l=null;h.push(new qa(v||""));try{d=k.parent}catch(n){d=null}}while(d&&k!==d);for(let n=0,ia=h.length-1;n<=ia;++n)h[n].depth=ia-n;k=p;if(k.location&&k.location.ancestorOrigins&&k.location.ancestorOrigins.length===h.length-1)for(v=1;v<h.length;++v){const n=h[v];n.url||(n.url=k.location.ancestorOrigins[v-1]||"",n.g=!0)}m=h}var r=m;let I=new qa(p.location.href,!1);m=null;const O=r.length-1;for(k=O;k>=0;--k){var u=r[k];!m&&oa.test(u.url)&&(m=u);if(u.url&&
!u.g){I=u;break}}u=null;const Ga=r.length&&r[O].url;I.depth!==0&&Ga&&(u=r[O]);e=new pa(I,u);if(e.h){r=t;var w=e.h.url||"";r.g.push(4);r.h[4]=R("top",w)}var P={url:e.g.url||""};if(e.g.url){const n=e.g.url.match(da);var A=n[1],ja=n[3],ka=n[4];w="";A&&(w+=A+":");ja&&(w+="//",w+=ja,ka&&(w+=":"+ka));var la=w}else la="";A=t;P=[P,{url:la}];A.g.push(5);A.h[5]=P;Aa(this.l,f,t,this.i,c)}catch(t){try{Aa(this.l,f,{context:"ecmserr",rctx:a,msg:L(t),url:e?.g.url??""},this.i,c)}catch(I){}}return!0}};function Aa(a,b,c,d=!1,f){if((d?a.g:Math.random())<(f||.01))try{let e;c instanceof S?e=c:(e=new S,G(c,(l,h)=>{var m=e;const k=m.j++;l=R(h,l);m.g.push(k);m.h[k]=l}));const g=za(e,"/pagead/gen_204?id="+b+"&");g&&fa(g)}catch(e){}}function Ca(){var a=T,b=window.google_srt;b>=0&&b<=1&&(a.g=b)}var Da=class{constructor(){this.g=Math.random()}};let T,U;
const V=new class{constructor(a,b){this.h=[];this.i=b||p;let c=null;b&&(b.google_js_reporting_queue=b.google_js_reporting_queue||[],this.h=b.google_js_reporting_queue,c=b.google_measure_js_timing);this.g=Q()||(c!=null?c:Math.random()<a)}start(a,b){if(!this.g)return null;a=new ta(a,b);b=`goog_${a.label}_${a.uniqueId}_start`;N&&Q()&&N.mark(b);return a}end(a){if(this.g&&typeof a.value==="number"){a.duration=(sa()||ra())-a.value;var b=`goog_${a.label}_${a.uniqueId}_end`;N&&Q()&&N.mark(b);!this.g||this.h.length>
2048||this.h.push(a)}}}(1,window);function Ea(){window.google_measure_js_timing||(V.g=!1,V.h!==V.i.google_js_reporting_queue&&(Q()&&x(V.h,va),V.h.length=0))}(function(a){T=a??new Da;typeof window.google_srt!=="number"&&(window.google_srt=Math.random());Ca();U=new Ba(V);U.g=()=>{};U.i=!0;window.document.readyState==="complete"?Ea():V.g&&ba(()=>{Ea()})})();function Fa(a){U.g=b=>{x(a,c=>{c(b)})}};function Ha(a){a=a===null?"null":a===void 0?"undefined":a;B===void 0&&(B=ca());var b=B;return new C(b?b.createHTML(a):a)};var W;if(W=aa){var X="IFRAME",Ia=document;X=String(X);Ia.contentType==="application/xhtml+xml"&&(X=X.toLowerCase());W="srcdoc"in Ia.createElement(X)}const Ja=W;function Ka(a,b){a.open("text/html","replace");b=Ha(String(b));a.write(D(b));a.close()};function La(a){var b=F(!0).find(c=>!!c.google_reactive_sra_lookup)?.google_reactive_sra_lookup;return b?b[a]:(b=ha())?b[a]:null};(function(a){try{const b=/\/(r\d+|dev)\/r\d+\/zrt_lookup\.html/.exec(a.location.pathname);b&&b[1]&&Fa([c=>{c.shv=b[1]}])}catch(b){}})(window);function Ma(){var a=(K.exec("#"+J.name)||K.exec(J.location.href))?.[2];if(a&&(a=decodeURIComponent(a),a=ma.exec(a))&&(a=+a[1],!isNaN(a)&&(a=La(a)))){a=a.creative;let c=null;try{c=J.frameElement}catch(d){}var b;if(b=c)try{b=E(c.contentWindow)}catch(d){b=!1}b?(b=c,Ja?(a=Ha(a),b.srcdoc=D(a)):(b=b.contentWindow)&&Ka(b.document,a)):Ka(J.document,a)}}var Y=U;let Z;
try{Y.h&&Y.h.g?(Z=Y.h.start((200).toString(),3),Ma(),Y.h.end(Z)):Ma()}catch(a){let b=!0;try{va(Z),b=Y.m(200,new na(a,{message:L(a)}),void 0,void 0)}catch(c){Y.j(217,c)}if(b)window.console?.error?.(a);else throw a;};}).call(this);
</script>
</head><body></body></html>