1"use strict";(self.webpackChunkjenova_docs=self.webpackChunkjenova_docs||[]).push([[5756],{80839:(i,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>g,metadata:()=>t,toc:()=>r});const t=JSON.parse('{"id":"Basics/Managing-Scripts","title":"Managing Scripts","description":"In this chapter you\'ll learn about managing scripts in the Jenova ecosystem.","source":"@site/pages/Basics/07-Managing-Scripts.md","sourceDirName":"Basics","slug":"/Basics/Managing-Scripts","permalink":"/docs/pages/Basics/Managing-Scripts","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"sidebar_position":7,"hide_table_of_contents":false},"sidebar":"documentationSidebar","previous":{"title":"IDE Integrations","permalink":"/docs/pages/Basics/IDE-Integrations"},"next":{"title":"Addons And Tools","permalink":"/docs/pages/Basics/Addons"}}');var n=s(74848),I=s(28453);const g={sidebar_position:7,hide_table_of_contents:!1},a="Managing Scripts",c={},r=[{value:"Script Management",id:"script-management",level:2},{value:"Creation/Attachment",id:"creationattachment",level:3},{value:"Assignment",id:"assignment",level:3},{value:"Templates",id:"templates",level:3},{value:"Operations",id:"operations",level:3},{value:"Built-in Scripts",id:"built-in-scripts",level:2},{value:"Script Types",id:"script-types",level:2},{value:"Active Scripts",id:"active-scripts",level:3},{value:"Passive Scripts",id:"passive-scripts",level:3},{value:"Hybrid Scripts",id:"hybrid-scripts",level:3},{value:"Script Metadata",id:"script-metadata",level:2},{value:"Script Icon",id:"script-icon",level:3},{value:"Script Documentation",id:"script-documentation",level:3},{value:"Script Manager",id:"script-manager",level:2},{value:"\ud83d\udcd6 Learn more about Jenova Profiler",id:"-learn-more-about-jenova-profiler",level:4}];function o(i){const e={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,I.R)(),...i.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.header,{children:(0,n.jsx)(e.h1,{id:"managing-scripts",children:"Managing Scripts"})}),"\n",(0,n.jsx)(e.p,{children:"In this chapter you'll learn about managing scripts in the Jenova ecosystem."}),"\n",(0,n.jsx)(e.h2,{id:"script-management",children:"Script Management"}),"\n",(0,n.jsx)(e.p,{children:"Script Management is a simple yet important part of programming pipeline. Let's dive into different aspects of managing your C++ Scripts."}),"\n",(0,n.jsx)(e.h3,{id:"creationattachment",children:"Creation/Attachment"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)("span",{className:"sub-header-title",children:"Using File System"}),(0,n.jsx)(e.br,{}),"\n","To Create a new script using the file system, right-click inside ",(0,n.jsx)(e.strong,{children:"FileSystem"})," and pick ",(0,n.jsx)(e.img,{alt:"GodotIcon_Add",src:s(31242).A+"",width:"16",height:"16"})," ",(0,n.jsx)(e.strong,{children:"Create New >"})," ",(0,n.jsx)(e.img,{alt:"GodotIcon_Script",src:s(77324).A+"",width:"16",height:"16"})," ",(0,n.jsx)(e.strong,{children:"Script..."})," to open ",(0,n.jsx)(e.strong,{children:"Create Script"})," window, Select ",(0,n.jsx)(e.strong,{children:"C++ Script"})," from Language list and click on ",(0,n.jsx)("kbd",{children:"Create"})," button."]}),"\n",(0,n.jsx)("figure",{children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{alt:"Screenshot_ConfigureBuildInJenovaMenu",src:s(3645).A+"",width:"1047",height:"553"}),"\n",(0,n.jsxs)("figcaption",{children:["Using FileSystem ",(0,n.jsx)(e.strong,{children:"Create New > Script..."})," for adding new C++ Scripts."]})]})}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)("span",{className:"sub-header-title",children:"Using Inspector"}),(0,n.jsx)(e.br,{}),"\n","To Create a new C++ Script using inspector, Select a node, Head to the ",(0,n.jsx)(e.strong,{children:"Script"})," value at bottom of inspector panel, Click on the arrow beside script slot and select ",(0,n.jsx)(e.img,{alt:"GodotIcon_NewScript",src:s(32600).A+"",width:"16",height:"16"})," ",(0,n.jsx)(e.strong,{children:"New Script..."})," to open ",(0,n.jsx)(e.strong,{children:"Create Script"})," window, Select ",(0,n.jsx)(e.strong,{children:"C++ Script"})," from Language list and click on ",(0,n.jsx)("kbd",{children:"Create"})," button."]}),"\n",(0,n.jsx)("figure",{children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{alt:"GuideImage_JenovaPackageManagerCompilers",src:s(51051).A+"",width:"1295",height:"521"}),"\n",(0,n.jsxs)("figcaption",{children:[(0,n.jsx)(e.strong,{children:"Create Script Dialogue"}),", Adding new C++ Script to project."]})]})}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)("span",{className:"sub-header-title",children:"Using Scene Tree"}),(0,n.jsx)(e.br,{}),"\n","To Create a new C++ script using scene hierarchy, Right-click on a node and then select ",(0,n.jsx)(e.img,{alt:"GodotIcon_AttachScript",src:s(32600).A+"",width:"16",height:"16"})," ",(0,n.jsx)(e.strong,{children:"Attach Script"})," to open ",(0,n.jsx)(e.strong,{children:"Attach Node Script"})," window, Select ",(0,n.jsx)(e.strong,{children:"C++ Script"})," from Language list and click on ",(0,n.jsx)("kbd",{children:"Create"})," button."]}),"\n",(0,n.jsx)(e.h3,{id:"assignment",children:"Assignment"}),"\n",(0,n.jsxs)(e.p,{children:["To assign a C++ Script to a node simply drag and drop it from ",(0,n.jsx)(e.strong,{children:"FileSystem"})," over your node in ",(0,n.jsx)(e.strong,{children:"SceneTree"})," or script slot in ",(0,n.jsx)(e.strong,{children:"Inspector"}),"."]}),"\n",(0,n.jsx)("figure",{children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{alt:"Screenshot_DragAndDropScript",src:s(12338).A+"",width:"1920",height:"1080"}),"\n",(0,n.jsxs)("figcaption",{children:["Drag Script from FileSystem and Drop it over target ",(0,n.jsx)(e.strong,{children:"Node"}),"."]})]})}),"\n",(0,n.jsx)(e.h3,{id:"templates",children:"Templates"}),"\n",(0,n.jsxs)(e.p,{children:["Jenova provides support for ",(0,n.jsx)(e.a,{href:"https://docs.godotengine.org/en/stable/tutorials/scripting/creating_script_templates.html",children:"Script Templates"})," based on the node class type. Templates are very useful to reduce the time for repeated code structures, Script Templates will be accessible from the engine's native ",(0,n.jsx)(e.strong,{children:"Create Script"})," window."]}),"\n",(0,n.jsx)("figure",{children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{alt:"GuideImage_JenovaScriptTemplates",src:s(65356).A+"",width:"1249",height:"518"}),"\n",(0,n.jsxs)("figcaption",{children:[(0,n.jsx)(e.strong,{children:"Attach Node Script Dialogue"}),", Picking a Script Template."]})]})}),"\n",(0,n.jsx)(e.p,{children:"Script Template System also provides script templates tailored to the selected interpreter backend. For example, if you're using the NitroJIT backend script templates will adapt to ensure compatibility with NitroJIT. Similarly, if you're using the Meteora backend script templates will adapt to be compatible with Meteora. Additionally, script templates can be universal ensuring compatibility with all backends."}),"\n",(0,n.jsxs)(e.p,{children:["You can create your own templates by placing them at ",(0,n.jsx)(e.code,{children:"res://Jenova/Templates"})," with proper format and new templates can be installed from the Package Manager, To add a new template place the C++ file inside related directory and create a ",(0,n.jsx)(e.code,{children:".json"})," file with same name as script."]}),"\n",(0,n.jsx)(e.p,{children:(0,n.jsx)(e.strong,{children:"Here's how script metadata looks like :"})}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-json",metastring:'title="Jenova Script Template Metadata"',children:'{\n "Category": "Inherited",\n "Backend": "Meteora",\n "Inherit": "Node",\n "Name": "Node Base",\n "Description": "Base Node Script (Meteora)",\n "Author": "Hamid.Memar",\n "Version": 1.0\n}\n'})}),"\n",(0,n.jsxs)("div",{className:"version-required-title",children:["\u232c Smart Templates \u232c ",(0,n.jsx)("i",{style:{fontSize:"12px",fontWeight:"200",color:"#6c6c9b"}
1,children:"Version 0.3.8.0+"})]}),"\n",(0,n.jsx)(e.p,{children:"The Template System provides macros to automatically inject dynamic data into the assigned script template :"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Base Class Macro"})," (",(0,n.jsx)(e.code,{children:"$BASE_TYPE$"}),")",(0,n.jsx)(e.br,{}),"\n","Replaced with the class type the script is assigned to such as ",(0,n.jsx)(e.code,{children:"Node3D"}),", ",(0,n.jsx)(e.code,{children:"RigidBody3D"}),", ",(0,n.jsx)(e.code,{children:"Sprite2D"})," etc."]}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Base Class Header Macro"})," (",(0,n.jsx)(e.code,{children:"$BASE_TYPE_HEADER$"}),")",(0,n.jsx)(e.br,{}),"\n","Replaced with the header file name based on the assigned class type such as ",(0,n.jsx)(e.code,{children:"node3d.hpp"}),", ",(0,n.jsx)(e.code,{children:"rigid_body3d.hpp"}),", ",(0,n.jsx)(e.code,{children:"sprite2d.hpp"})," etc."]}),"\n"]}),"\n",(0,n.jsxs)(e.li,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Base Class Name Macro"})," (",(0,n.jsx)(e.code,{children:"$BASE_CLASS_NAME$"}),")",(0,n.jsx)(e.br,{}),"\n","Replaced with a generated class name based on the script file name. It's useful for Nested Extension templates."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(e.h3,{id:"operations",children:"Operations"}),"\n",(0,n.jsx)(e.p,{children:"You can rename or move C++ Scripts at anytime, But remember, By changing name of a script or moving it unique identifier of your script will change and you need to clean solution and rebuild it again, Also If you're using External editors such as Visual Studio, You will need to re-export your project."}),"\n",(0,n.jsx)(e.admonition,{title:"Attention",type:"warning",children:(0,n.jsx)(e.p,{children:"Do not modify the codebase directly from Visual Studio. This includes adding, renaming, or deleting C++, header, resource and project files in a generated Visual Studio solution. Instead, apply changes in Godot and re-export the project."})}),"\n",(0,n.jsx)(e.h2,{id:"built-in-scripts",children:"Built-in Scripts"}),"\n",(0,n.jsx)(e.p,{children:"Jenova supports built-in scripts similar to GDScript, Allowing you to embed C++ scripts directly inside Nodes without relying on the filesystem."}),"\n",(0,n.jsxs)(e.p,{children:["To create a built-in script simply right-click on a ",(0,n.jsx)(e.code,{children:"Node"})," in scene tree and then select ",(0,n.jsx)(e.img,{alt:"GodotIcon_AttachScript",src:s(32600).A+"",width:"16",height:"16"})," ",(0,n.jsx)(e.strong,{children:"Attach Script"})," to open ",(0,n.jsx)(e.strong,{children:"Attach Node Script"})," window, Check ",(0,n.jsx)(e.strong,{children:"Built-in Script"})," and click on ",(0,n.jsx)(e.strong,{children:"Create"})," button."]}),"\n",(0,n.jsx)("figure",{children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{alt:"GuideImage_JenovaBuiltInScript",src:s(32391).A+"",width:"1249",height:"597"}),"\n",(0,n.jsxs)("figcaption",{children:[(0,n.jsx)(e.strong,{children:"Attach Node Script Dialogue"}),", Creating Built-In Script."]})]})}),"\n",(0,n.jsx)(e.admonition,{title:"Deprecated",type:"note",children:(0,n.jsxs)(e.p,{children:["As of release 0.3.9.1+, Built-in scripts have been deprecated due to no tangible benefits.",(0,n.jsx)(e.br,{}),"\n","While the functionality is still available in the source code, it is disabled by default for better maintenance."]})}),"\n",(0,n.jsx)(e.h2,{id:"script-types",children:"Script Types"}),"\n",(0,n.jsx)(e.p,{children:"Jenova C++ Scripts can be used in different ways. Here are the different types currently available in the ecosystem."}),"\n",(0,n.jsx)(e.h3,{id:"active-scripts",children:"Active Scripts"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Active Scripts"})," are C++ scripts assigned to a ",(0,n.jsx)(e.code,{children:"Node"})," in an active scene. These scripts contain a C++ Script Instance and can expose Properties, Resources, References and Documentation to the engine. They are useful for programming game logic and exposing events.",(0,n.jsx)(e.br,{}),"\n",(0,n.jsx)(e.strong,{children:"Tool Scripts"})," are also active scripts."]}),"\n",(0,n.jsx)(e.h3,{id:"passive-scripts",children:"Passive Scripts"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Passive Scripts"})," are C++ scripts not assigned to any ",(0,n.jsx)(e.code,{children:"Node"}
1)," nor active in any scene. They are useful for creating ",(0,n.jsx)(e.a,{href:"/pages/Advanced/Nested-Extensions",children:"Nested Extensions"}),", External Functions, Utilities, and Exporting Functions for third-party libraries.",(0,n.jsx)(e.br,{}),"\n",(0,n.jsx)(e.strong,{children:"Header Scripts"})," are also passive scripts."]}),"\n",(0,n.jsx)(e.h3,{id:"hybrid-scripts",children:"Hybrid Scripts"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Hybrid Scripts"})," are C++ scripts using both active and passive context, Learn more about Hybrid Scripts ",(0,n.jsx)(e.a,{href:"/pages/Mechanism#nested-extension-development",children:"Here"}),"."]}),"\n",(0,n.jsx)(e.h2,{id:"script-metadata",children:"Script Metadata"}),"\n",(0,n.jsxs)(e.p,{children:["The ",(0,n.jsx)(e.strong,{children:"Script Metadata"})," feature allows you to personalize your Jenova C++ Scripts by attaching custom icons and documentation for improved organization and visual clarity. Whether you're sharing scripts with others or developing tool scripts, this feature proves especially useful."]}),"\n",(0,n.jsx)(e.h3,{id:"script-icon",children:"Script Icon"}),"\n",(0,n.jsx)(e.p,{children:"To associate a custom icon with your script, follow these steps :"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["Create an ",(0,n.jsx)(e.strong,{children:".svg"})," file named exactly as your script file ",(0,n.jsx)(e.em,{children:"(excluding extension)"})]}),"\n",(0,n.jsx)(e.li,{children:"Place the icon file in the same directory as your script file."}),"\n"]}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Example:"}),(0,n.jsx)(e.br,{}),"\n","If your script is located at : ",(0,n.jsx)(e.code,{children:"res://Scripts/Tools/MeshFixer.cpp"}),(0,n.jsx)(e.br,{}),"\n","Then your icon should be named and placed as :",(0,n.jsx)(e.code,{children:"res://Scripts/MeshFixer.svg"})]}),"\n",(0,n.jsxs)(e.blockquote,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"\ud83d\udca1Tip :"})," If the icon does not immediately appear, try clearing the project cache to apply updates correctly."]}),"\n"]}),"\n",(0,n.jsx)(e.h3,{id:"script-documentation",children:"Script Documentation"}),"\n",(0,n.jsx)(e.p,{children:"To add documentation to your script file and make it accessible within the engine editor's help system:"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:["Create an ",(0,n.jsx)(e.strong,{children:".xml"})," file following the same format used by engine documentation files."]}),"\n",(0,n.jsxs)(e.li,{children:["Name the file exactly the same as your script ",(0,n.jsx)(e.em,{children:"(excluding extension)"})]}),"\n",(0,n.jsx)(e.li,{children:"Place the documentation file in the same directory as your script file."}),"\n"]}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Example:"}),(0,n.jsx)(e.br,{}),"\n","If your script is located at : ",(0,n.jsx)(e.code,{children:"res://Scripts/MeshFixer.cpp"}),(0,n.jsx)(e.br,{}),"\n","Then your documentation should be named and placed as :",(0,n.jsx)(e.code,{children:"res://Scripts/MeshFixer.xml"})]}),"\n",(0,n.jsx)(e.pre,{children:(0,n.jsx)(e.code,{className:"language-XML",metastring:'title="Jenova Script Documentation Metadata"',children:'<?xml version="1.0" encoding="UTF-8"?>\n<class name="MeshFixer" inherits="EditorPlugin"\n xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">\n <brief_description>\n An editor tool to fix broken mesh data in selected MeshInstances.\n </brief_description>\n <description>\n This tool detects and repairs invalid mesh surfaces, restoring usable geometry for selected MeshInstances.\n </description>\n\t<tutorials>\n\t\t<link title="Learn More">https://godottools.com/tutorials/mesh-fixer</link>\n\t</tutorials>\n\t<members>\n\t\t<member name="FixInvalidNormals" type="bool" default="true">\n\t\t\tWhen set to [code]true[/code] tool fixes invalid normal indices.\n\t\t</member>\n\t</members>\n\t<methods>\n\t\t<method name="FixMesh">\n\t\t\t<return type="void" />\n\t\t\t<param index="0" name="instance" type="Object" />\n\t\t\t<description>\n\t\t\t\tFixes [code]MeshInstance3D[/code] mesh data.\n\t\t\t</description>\n\t\t</method>\n\t</methods>\n</class>\n'})}),"\n",(0,n.jsxs)(e.blockquote,{children:["\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"\ud83d\udca1Tip :"})," If documentation doesn\u2019t appear immediately, Use ",(0,n.jsxs)(e.strong,{children:["Jenova > Tools > ",(0,n.jsx)(e.img,{alt:"GodotIcon_Book",src:s(80884).A+"",width:"16",height:"16"})," Reload Script Documentation"]})," to refresh the index."]}),"\n"]}),"\n",(0,n.jsx)(e.h2,{id:"script-manager",children:"Script Manager"}),"\n",(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.strong,{children:"Script Manager"})," is a tool for displaying structured details of all C++ scripts in the project.",(0,n.jsx)(e.br,{}),"\n","The information includes Script Unique ID, Script Type, Script Function/Properties count and Sentinel profiling data."]}),"\n",(0,n.jsxs)(e.p,{children:["Script Manager can be accessed from the menu ",(0,n.jsxs)(e.strong,{children:["Jenova > Tools > ",(0,n.jsx)(e.img,{alt:"GodotIcon_ScriptManager",src:s(77719).A+"",width:"16",height:"16"})," Open Script Manager..."]})]}),"\n",(0,n.jsx)("figure",{children:(0,n.jsxs)(e.p,{children:[(0,n.jsx)(e.img,{alt:"GuideImage_JenovaScriptManager",src:s(58179).A+"",width:"1378",height:"963"}),"\n",(0,n.jsxs)("figcaption",{children:[(0,n.jsx)(e.strong,{children:"Script Manager Window"}),": All scripts are displayed with their associated data."]})]})}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:"Unique ID (UID) :"})," The unique identifier of the script, used by the compiler and interpreter."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:"Type :"})," The script type detected based on its content and behavior.",(0,n.jsx)(e.br,{}),"\n",(0,n.jsxs)(e.em,{children:["It can be ",(0,n.jsx)(e.strong,{children:"Passive"}),", ",(0,n.jsx)(e.strong,{children:"Active"}),", ",(0,n.jsx)(e.strong,{children:"Hybrid"})," or ",(0,n.jsx)(e.strong,{children:"Extension"})]}),"."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:"Functions :"})," Displays the number of functions defined and parsed by the interpreter."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:"Properties :"})," Displays the number of properties defined and parsed by the interpreter."]}),"\n",(0,n.jsxs)(e.li,{children:[(0,n.jsx)(e.strong,{children:"Profiler Records :"})," Displays profiling records loaded from the Sentinel cached database."]}),"\n"]}),"\n",(0,n.jsx)(e.h4,{id:"-learn-more-about-jenova-profiler",children:(0,n.jsx)(e.a,{href:"/pages/Advanced/Debugging#using-sentinel-profiler",children:"\ud83d\udcd6 Learn more about Jenova Profiler"})})]})}function l(i={}){const{wrapper:e}={...(0,I.R)(),...i.components};return e?(0,n.jsx)(e,{...i,children:(0,n.jsx)(o,{...i})}):o(i)}},12338:(i,e,s)=>{s.d(e,{A:()=>t});const t=s.p+"assets/images/image-20250404031130700-d98ba1fc2940e8552
1c69bbe3033b05f9.gif"},65356:(i,e,s)=>{s.d(e,{A:()=>t});const t=s.p+"assets/images/image-20250404031239361-b8700c4418e779d39921162dca53c8f0.png"},32391:(i,e,s)=>{s.d(e,{A:()=>t});const t=s.p+"assets/images/image-20250404031239362-3d8a490ca96fb097d9db6fa6895aae96.png"},58179:(i,e,s)=>{s.d(e,{A:()=>t});const t=s.p+"assets/images/image-20260117173658102-84352daed9cb70b474e329615405d57e.png"},31242:(i,e,s)=>{s.d(e,{A:()=>t});const t="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbD0iI2UwZTBlMCIgZD0ibTcgMXY2aC02djJoNnY2aDJ2LTZoNnYtMmgtNnYtNnoiLz48L3N2Zz4="},77324:(i,e,s)=>{s.d(e,{A:()=>t});const t="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbD0iI2UwZTBlMCIgZD0iTTYgMWEyIDIgMCAwIDAtMiAydjdIMXYzYTIgMiAwIDAgMCAyIDJoN2EyIDIgMCAwIDAgMi0yVjVoM1YzYTIgMiAwIDAgMC0yLTJ6Ii8+PHBhdGggZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYgMWEyIDIgMCAwIDAtMiAydjdIMXYzYTIgMiAwIDEgMCA0IDBWM2ExIDEgMCAwIDEgMiAwdjNoNVY1SDhWM2EyIDIgMCAwIDAtMi0yek0yIDExaDJ2MmExIDEgMCAwIDEtMiAweiIvPjwvc3ZnPg=="},32600:(i,e,s)=>{s.d(e,{A:()=>t});const t="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbD0iI2UwZTBlMCIgZD0iTTYgMWEyIDIgMCAwIDAtMiAydjdIMXYzYTIgMiAwIDAgMCAyIDJoN3YtMUg4di00aDJWOGgyVjVoM1YzYTIgMiAwIDAgMC0yLTJ6Ii8+PHBhdGggZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYgMWEyIDIgMCAwIDAtMiAydjdIMXYzYTIgMiAwIDEgMCA0IDBWM2ExIDEgMCAwIDEgMiAwdjNoNVY1SDhWM2EyIDIgMCAwIDAtMi0yek0yIDExaDJ2MmExIDEgMCAwIDEtMiAweiIvPjxwYXRoIGZpbGw9IiM1ZmZmOTciIGQ9Ik0xMyAxM2gydi0yaC0yVjloLTJ2Mkg5djJoMnYyaDJ6Ii8+PC9zdmc+"},3645:(i,e,s)=>{s.d(e,{A:()=>t});const t=s.p+"assets/images/image-20250110151802433-c928285d13583bd9a5c0c051377b2d8c.png"},51051:(i,e,s)=>{s.d(e,{A:()=>t});const t=s.p+"assets/images/image-20250110152021358-99cb4e5a6b7a17a4ddf705a8268cf359.png"},77719:(i,e,s)=>{s.d(e,{A:()=>t});const t="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjE2IgogICBoZWlnaHQ9IjE2IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICBzb2RpcG9kaTpkb2NuYW1lPSJTY3JpcHRNYW5hZ2VyLnN2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4zLjIgKDA5MWUyMGUsIDIwMjMtMTEtMjUsIGN1c3RvbSkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXcxIgogICAgIHBhZ2Vjb2xvcj0iIzUwNTA1MCIKICAgICBib3JkZXJjb2xvcj0iI2VlZWVlZSIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSIwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgaW5rc2NhcGU6ZGVza2NvbG9yPSIjNTA1MDUwIgogICAgIGlua3NjYXBlOnpvb209IjIyLjYyNzQxNyIKICAgICBpbmtzY2FwZTpjeD0iMTIuNjM5NTM0IgogICAgIGlua3NjYXBlOmN5PSIxMy41NDU1MTQiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEzNjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzEiIC8+PGcKICAgICBzdHlsZT0iZmlsbDojMTFmYmFmO3N0cm9rZTojMTFmYmFmIgogICAgIGlkPSJnMiIKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjQ3ODI0OTk5LDAsMCwwLjQ3ODI0OTk5LDAuMjk5MzE2NzcsMC43NzYxMjk2OCkiPjxnCiAgICAgICBpZD0iU1ZHUmVwb19iZ0NhcnJpZXIiCiAgICAgICBzdHJva2Utd2lkdGg9IjAiIC8+PGcKICAgICAgIGlkPSJTVkdSZXBvX3RyYWNlckNhcnJpZXIiCiAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPjxnCiAgICAgICBpZD0iU1ZHUmVwb19pY29uQ2FycmllciI+IDxzdHlsZQogICB0eXBlPSJ0ZXh0L2NzcyIKICAgaWQ9InN0eWxlMSI+IC5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9IDwvc3R5bGU+IDxwYXRoCiAgIGQ9Ik0gMjkuNiwxMi43IEMgMjkuNSwxMi4yIDI5LDExLjkgMjguNSwxMS45IDI3LjMsMTIuMSAyNi4xLDExLjUgMjUuNSwxMC40IDI0LjksOS40IDI1LDggMjUuNyw3LjEgMjYsNi43IDI2LDYuMSAyNS42LDUuOCAyNCw0LjMgMjIuMSwzLjIgMjAsMi42IDE5LjUsMi41IDE5LDIuNyAxOC44LDMuMiAxOC4zLDQuMyAxNy4yLDUgMTYsNSAxNC44LDUgMTMuNyw0LjMgMTMuMiwzLjIgMTMsMi43IDEyLjUsMi40IDEyLDIuNiA5LjksMy4yIDgsNC4zIDYuNCw1LjkgNiw2LjIgNiw2LjggNi4zLDcuMiA3LDguMiA3LjEsOS41IDYuNSwxMC41IDUuOSwxMS41IDQuNywxMi4xIDMuNSwxMiAzLDExLjkgMi41LDEyLjMgMi40LDEyLjggMi4xLDEzLjggMiwxNC45IDIsMTYgYyAwLDEuMSAwLjEsMi4yIDAuNCwzLjMgMC4xLDAuNSAwLjYsMC44IDEuMSwwLjcgMS4yLC0wLjIgMi40LDAuNCAzLDEuNSAwLjYsMSAwLjUsMi40IC0wLjIsMy4zIC0wLjMsMC40IC0wLjMsMSAwLjEsMS4zIDEuNiwxLjUgMy42LDIuNyA1LjcsMy4zIDAuNSwwLjEgMSwtMC4xIDEuMiwtMC42IDAuNSwtMS4xIDEuNiwtMS44IDIuOCwtMS44IDEuMiwwIDIuMywwLjcgMi44LDEuOCAwLjIsMC40IDAuNSwwLjYgMC45LDAuNiAwLjEsMCAwLjIsMCAwLjMsMCAyLjEsLTAuNiA0LjEsLTEuOCA1LjcsLTMuMyA
1wLjQsLTAuNCAwLjQsLTAuOSAwLjEsLTEuMyAtMC43LC0xIC0wLjgsLTIuMyAtMC4yLC0zLjMgMC42LC0xIDEuOCwtMS42IDMsLTEuNSAwLjUsMC4xIDEsLTAuMyAxLjEsLTAuOCAwLjMsLTEuMSAwLjQsLTIuMiAwLjQsLTMuMyAwLC0xLjEgLTAuMywtMi4xIC0wLjYsLTMuMiB6IG0gLTE3LjksNS42IGMgMC40LDAuNCAwLjQsMSAwLDEuNCAtMC4yLDAuMiAtMC40LDAuMyAtMC43LDAuMyAtMC4zLDAgLTAuNSwtMC4xIC0wLjcsLTAuMyBsIC0zLC0zIGMgLTAuNCwtMC40IC0wLjQsLTEgMCwtMS40IGwgMywtMyBjIDAuNCwtMC40IDEsLTAuNCAxLjQsMCAwLjQsMC40IDAuNCwxIDAsMS40IEwgOS40LDE2IFogbSA3LjIsLTUuOSAtNCw4IEMgMTQuNywyMC44IDE0LjQsMjEgMTQsMjEgYyAtMC4yLDAgLTAuMywwIC0wLjQsLTAuMSAtMC41LC0wLjIgLTAuNywtMC44IC0wLjQsLTEuMyBsIDQsLTggYyAwLjIsLTAuNSAwLjgsLTAuNyAxLjMsLTAuNCAwLjQsMC4yIDAuNiwwLjggMC40LDEuMiB6IG0gNS44LDQuMyAtMywzIEMgMjEuNSwxOS45IDIxLjMsMjAgMjEsMjAgYyAtMC4zLDAgLTAuNSwtMC4xIC0wLjcsLTAuMyAtMC40LC0wLjQgLTAuNCwtMSAwLC0xLjQgTCAyMi42LDE2IDIwLjMsMTMuNyBjIC0wLjQsLTAuNCAtMC40LC0xIDAsLTEuNCAwLjQsLTAuNCAxLC0wLjQgMS40LDAgbCAzLDMgYyAwLjQsMC40IDAuNCwxIDAsMS40IHoiCiAgIGlkPSJwYXRoMS02IiAvPiA8L2c+PC9nPjwvc3ZnPgo="},80884:(i,e,s)=>{s.d(e,{A:()=>t});const t="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjE2IgogICBoZWlnaHQ9IjE2IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxIgogICBzb2RpcG9kaTpkb2NuYW1lPSJCb29rLnN2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4zLjIgKDA5MWUyMGUsIDIwMjMtMTEtMjUsIGN1c3RvbSkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnMKICAgICBpZD0iZGVmczEiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXcxIgogICAgIHBhZ2Vjb2xvcj0iIzUwNTA1MCIKICAgICBib3JkZXJjb2xvcj0iI2VlZWVlZSIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSIwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgaW5rc2NhcGU6ZGVza2NvbG9yPSIjNTA1MDUwIgogICAgIGlua3NjYXBlOnpvb209IjIyLjYyNzQxNyIKICAgICBpbmtzY2FwZTpjeD0iMS4xMDQ4NTQzIgogICAgIGlua3NjYXBlOmN5PSI4LjE1MzgyNTEiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIyNTYwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEzNjEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzEiIC8+PGcKICAgICBpZD0iZzEiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4wMzA1NDk3NiwwLDAsMC4wMzA1NDk3NiwwLjE3OTI2MTQ0LDAuMTc5MjYxNDQpIj48Y2lyY2xlCiAgICAgICBzdHlsZT0iZmlsbDojNGFiOGExIgogICAgICAgY3g9IjI1NiIKICAgICAgIGN5PSIyNTYiCiAgICAgICByPSIyNTYiCiAgICAgICBpZD0iY2lyY2xlMSIgLz48cGF0aAogICAgICAgc3R5bGU9ImZpbGw6IzQzYTY5MSIKICAgICAgIGQ9Ik0gNTAzLjksMzIwLjE0IDQzMiwxNDAgYyAwLC00LjQgLTMuNiwtOCAtOCwtOCBoIC00IHYgLTEuODUyIGMgLTEuMjk2LC0wLjI2IC0yLjYyOCwtMC41MzYgLTQsLTAuODI4IFYgMTI4LjA5NiAxMjYuMDQ4IDEyNCBjIC0yMCwtNCAtNDcuODE2LC0xMiAtOTIsLTEyIC00NC4xODQsMCAtNjQsOCAtNjgsMTIgLTAuMjkyLC0wLjI5NiAtMC43MDQsLTAuNjE2IC0xLjE3MiwtMC45NDggLTAuMTI0LC0wLjA4OCAtMC4yNzIsLTAuMTggLTAuNDE2LC0wLjI3MiAtMC40MTIsLTAuMjY4IC0wLjg3NiwtMC41NDggLTEuMzk2LC0wLjgzMiAtMC4xNTYsLTAuMDg0IC0wLjMsLTAuMTY4IC0wLjQ3MiwtMC4yNTYgLTIuMjUyLC0xLjE4IC01LjQ4NCwtMi40NjQgLTkuNzY0LC0zLjcwOCAtMC4wMjQsLTAuMDA0IC0wLjA0LC0wLjAwOCAtMC4wNTYsLTAuMDEyIC00LjQxNiwtMS4yOCAtOS45ODQsLTIuNSAtMTYuNzk2LC0zLjUwOCBDIDIxNi4wNCwxMTMgMjAzLjU2NCwxMTIgMTg4LDExMiBjIC00NC4xODQsMCAtNzIsOCAtOTIsMTIgdiAyLjA0OCAyLjA0OCAzLjkwNCBoIC04IGMgLTQuNCwwIC04LDMuNiAtOCw4IHYgMi4wNDggMi4wNDggMjE5LjkwNCAyLjA0OCAyLjA0OCAzLjkwNCAyLjA0OCAxLjk1MiBsIDM5LjExNiw5Ni4yOCBDIDE1OC43Miw0OTcuNCAyMDUuNjM2LDUxMiAyNTYsNTEyIDM3NS4yNDQsNTEyIDQ3NS40MjgsNDMwLjQ4NCA1MDMuOSwzMjAuMTQgWiIKICAgICAgIGlkPSJwYXRoMSIgLz48cGF0aAogICAgICAgc3R5bGU9ImZpbGw6I2NjNTg0YyIKICAgICAgIGQ9Ik0gNDI0LDEzMiBIIDg4IGMgLTQuNCwwIC04LDMuNiAtOCw4IHYgMjMyIGMgMCw0LjQgMy42LDggOCw4IGggMTQwIGMgMCw4LjgzNiAxMi41NCwxNiAyOCwxNiAxNS40NiwwIDI4LC03LjE2NCAyOCwtMTYgaCAxNDAgYyA0LjQsMCA4LC0zLjYgOCwtOCBWIDE0MCBjIDAsLTQuNCAtMy42LC04IC04LC04IHoiCiAgICAgICBpZD0icGF0aDIiIC8+PHJlY3QKICAgICAgIHg9IjI2NCIKICAgICAgIHk9IjEzMiIKICAgICAgIHN0eWxlPSJmaWxsOiNiZjUzNDciCiAgICAgICB3aWR0aD0iMTYwIgogICAgICAgaGVpZ2h0PSIyMzYiCiAgICAgICBpZD0icmVjdDIiIC8+PHBhdGgKICAgICAgI
1HN0eWxlPSJmaWxsOiM5OTQyMzkiCiAgICAgICBkPSJNIDQyNCwzNzIgSCAyODQgYyAwLDguODM2IC0xMi41NCwxNiAtMjgsMTYgLTE1LjQ2LDAgLTI4LC03LjE2NCAtMjgsLTE2IEggODggYyAtNC40LDAgLTgsLTMuNiAtOCwtOCB2IDggYyAwLDQuNCAzLjYsOCA4LDggaCAxNDAgYyAwLDguODM2IDEyLjU0LDE2IDI4LDE2IDE1LjQ2LDAgMjgsLTcuMTY0IDI4LC0xNiBoIDE0MCBjIDQuNCwwIDgsLTMuNiA4LC04IHYgLTggYyAwLDQuNCAtMy42LDggLTgsOCB6IgogICAgICAgaWQ9InBhdGgzIiAvPjxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDojZmZmOGU2IgogICAgICAgZD0ibSAxODgsMTEyIGMgLTQ0LjE4NCwwIC03Miw4IC05MiwxMiBWIDM2NCBIIDI1NiBWIDEyNCBjIC00LC00IC0yMy44MTYsLTEyIC02OCwtMTIgeiIKICAgICAgIGlkPSJwYXRoNCIgLz48cGF0aAogICAgICAgc3R5bGU9ImZpbGw6I2U2ZGJjMyIKICAgICAgIGQ9Im0gMjU2LDM2NCBjIDAsLTExLjA0NCAtMjMuODE2LC0yMCAtNjgsLTIwIC00NC4xODQsMCAtODQsMTIgLTkyLDIwIHoiCiAgICAgICBpZD0icGF0aDUiIC8+PHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOiNmZmY4ZTYiCiAgICAgICBkPSJtIDMyNCwxMTIgYyA0NC4xODQsMCA3Miw4IDkyLDEyIFYgMzY0IEggMjU2IFYgMTI0IGMgNCwtNCAyMy44MTYsLTEyIDY4LC0xMiB6IgogICAgICAgaWQ9InBhdGg2IiAvPjxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDojZTZkYmMzIgogICAgICAgZD0ibSAyNTYsMzY0IGMgMCwtMTEuMDQ0IDIzLjgxNiwtMjAgNjgsLTIwIDQ0LjE4NCwwIDg0LDEyIDkyLDIwIHoiCiAgICAgICBpZD0icGF0aDciIC8+PHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgICAgICBkPSJNIDI1NiwzNDAgViAxMjQgYyAtMi41ODQsLTIuNTkyIC0xMS44ODQsLTYuODUyIC0zMC4wNzIsLTkuNTM2IHoiCiAgICAgICBpZD0icGF0aDgiIC8+PHJlY3QKICAgICAgIHg9IjEwMCIKICAgICAgIHk9IjM2NCIKICAgICAgIHN0eWxlPSJmaWxsOiNiZjUzNDciCiAgICAgICB3aWR0aD0iMTY0IgogICAgICAgaGVpZ2h0PSI0IgogICAgICAgaWQ9InJlY3Q4IiAvPjxnCiAgICAgICBpZD0iZzI2Ij4KCTxwYXRoCiAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgIGQ9Im0gNDAwLDE2NCBjIC00Mi42NjgsMCAtODUuMzMyLDAgLTEyOCwwIDAsLTExLjIgMCwtMTYuOCAwLC0yOCA0Ni43MjgsLTcuMjI4IDgxLjI3MiwtNy4yMzIgMTI4LDAgMCwxMS4yIDAsMTYuOCAwLDI4IHoiCiAgIGlkPSJwYXRoOSIgLz4KCTxyZWN0CiAgIHg9IjI5MiIKICAgeT0iMTg0IgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTA4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0OSIgLz4KCTxyZWN0CiAgIHg9IjI3MiIKICAgeT0iMjAwIgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTI4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0MTAiIC8+Cgk8cmVjdAogICB4PSIyNzIiCiAgIHk9IjIxNiIKICAgc3R5bGU9ImZpbGw6I2YyZTdjZSIKICAgd2lkdGg9IjEyOCIKICAgaGVpZ2h0PSI4IgogICBpZD0icmVjdDExIiAvPgoJPHJlY3QKICAgeD0iMjcyIgogICB5PSIyMzIiCiAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgIHdpZHRoPSIxMjgiCiAgIGhlaWdodD0iOCIKICAgaWQ9InJlY3QxMiIgLz4KCTxyZWN0CiAgIHg9IjI3MiIKICAgeT0iMjQ4IgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTI4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0MTMiIC8+Cgk8cmVjdAogICB4PSIyNzIiCiAgIHk9IjI2NCIKICAgc3R5bGU9ImZpbGw6I2YyZTdjZSIKICAgd2lkdGg9IjEyOCIKICAgaGVpZ2h0PSI4IgogICBpZD0icmVjdDE0IiAvPgoJPHJlY3QKICAgeD0iMjcyIgogICB5PSIyODAiCiAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgIHdpZHRoPSIxMjgiCiAgIGhlaWdodD0iOCIKICAgaWQ9InJlY3QxNSIgLz4KCTxyZWN0CiAgIHg9IjI3MiIKICAgeT0iMjk2IgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTI4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0MTYiIC8+Cgk8cmVjdAogICB4PSIyNzIiCiAgIHk9IjMxMiIKICAgc3R5bGU9ImZpbGw6I2YyZTdjZSIKICAgd2lkdGg9IjEwOCIKICAgaGVpZ2h0PSI4IgogICBpZD0icmVjdDE3IiAvPgoJPHJlY3QKICAgeD0iMTM2IgogICB5PSIxNDAiCiAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgIHdpZHRoPSIxMDgiCiAgIGhlaWdodD0iOCIKICAgaWQ9InJlY3QxOCIgLz4KCTxyZWN0CiAgIHg9IjExNiIKICAgeT0iMTU2IgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTI4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0MTkiIC8+Cgk8cmVjdAogICB4PSIxMTYiCiAgIHk9IjE3MiIKICAgc3R5bGU9ImZpbGw6I2YyZTdjZSIKICAgd2lkdGg9IjEyOCIKICAgaGVpZ2h0PSI4IgogICBpZD0icmVjdDIwIiAvPgoJPHJlY3QKICAgeD0iMTE2IgogICB5PSIxODgiCiAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgIHdpZHRoPSIxMjgiCiAgIGhlaWdodD0iOCIKICAgaWQ9InJlY3QyMSIgLz4KCTxyZWN0CiAgIHg9IjExNiIKICAgeT0iMjA0IgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTI4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0MjIiIC8+Cgk8cmVjdAogICB4PSIxMTYiCiAgIHk9IjIyMCIKICAgc3R5bGU9ImZpbGw6I2YyZTdjZSIKICAgd2lkdGg9IjEyOCIKICAgaGVpZ2h0PSI4IgogICBpZD0icmVjdDIzIiAvPgoJPHJlY3QKICAgeD0iMTE2IgogICB5PSIyMzYiCiAgIHN0eWxlPSJmaWxsOiNmMmU3Y2UiCiAgIHdpZHRoPSIxMjgiCiAgIGhlaWdodD0iOCIKICAgaWQ9InJlY3QyNCIgLz4KCTxyZWN0CiAgIHg9IjExNiIKICAgeT0iMjUyIgogICBzdHlsZT0iZmlsbDojZjJlN2NlIgogICB3aWR0aD0iMTI4IgogICBoZWlnaHQ9IjgiCiAgIGlkPSJyZWN0MjUiIC8+Cgk8cmVjdAogICB4PSIxMTYiCiAgIHk9IjI2OCIKICAgc3R5bGU9ImZpbGw6I2YyZTdjZSIKICAgd2lkdGg9IjEwOCIKICAgaGVpZ2h0PSI4IgogICBpZD0icmVjdDI2IiAvPgo8L2c+PC9nPjwvc3ZnPgo="},28453:(i,e,s)=>{s.d(e,{R:()=>g,x:()=>a});var t=s(96540);const n={},I=t.createContext(n);function g(i){const e=t.useContext(I);return t.useMemo((function(){return"function"==typeof i?i(e):{...e,...i}}),[e,i])}function a(i){let e;return e=i.disableParentContext?"function"==typeof i.components?i.components(n):i.components||n:g(i.components),t.createElement(I.Provider,{value:e},i.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.